Android小話メモ(2) data-binding

はじめに

自分用のTL参照メモ。

過去のアーカイブ

TLメモ(data-binding)

data-bindingの利用に関して

レイアウトが崩れる問題は target apiを上げたことによる影響だと思うんですけどね・・

LinnerLayoutが縦 wrap_content指定だと 縮むので、マイグレーション対応でRelativeLayoutに直していたりする

どうも挙動変化タイミング的には RecyclerViewのレイアウト修正対応絡みのタイミングっぽい*1

android.jar側に修正が入っている感じ

bindView側でやると駄目というか、凄くちらついたので View側で確かに制御してるかな・・

android.visibility=@{TextUtils.isEmpty(bean.hoge) ? View.VISIBLE : View.GONE}

BindingAdapterを導入してみてデバッガーで止めればわかるけど、

ViewレンダリングのタイミングはbindingViewよりかなり遅延して実行されているのでタイミングが合わないんだと思う

googleのサンプル自体も、View側で制御するの推奨してるっぽいし

findViewByIdを使わないために、databinding導入が確かに一時期はやったけど

data-binding plugin が定期的に動かなくなる度にダメージ食らってるので

どのためのkotlin化推奨の流れ だと正直な所思ってたりしてる

結局のところ

で十分かなと思う面も多々ある。

@SuppressWarnings({"unchecked","deprecation"})
protected <T extends PreferenceGroup> T _findPreference(final String key){
    return (T)findPreference(key);
}

@SuppressWarnings("unchecked")
protected <T extends View> T _findViewById(final int id){
    return (T)findViewById(id);
}

@SuppressWarnings("unchecked")
protected <T extends View> T _findViewById(View parent,final int id){
    return (T)parent.findViewById(id);
}

data-bindingの仕組み的な話

この記事の記載読んでたんだけど

binding.executePendingBindings();

って、executePendingBindings 処理中にバックキーで戻ったりすると落ちるんで

try-catchで囲んだほうがいいかなーとは思った。

再現的には ListActivity とかのほうが容易だとは思うけど

このpatchがやっと採用された著名開発者のSTAR_ZERO さんの改善された言及はありますが

実際の処、Beta以降はdatabindingはリビルドが不安定。クリーンして初回ビルドすればいけるけど。

ただkaptを使うと安定する という話は有るようなので

AS3.0で開発するにはkotlin前提にしないと、不具合対応自体厳しくなるかもしれない。

G様内部の開発者がkotlinしか使ってないなら、ローカル単体テストもその環境下でしかしてないでしょうし。

なんかTLにAndroid Oの発表ついでにAS3.0正式版にしちゃえよ~」 なの結構流れてたけど

それで見切り発車なら、まあkotlin界隈だけが喜ぶ感じになりそうかな~(^^;; *2

data-bindingの不具合的な話

data-bindingとkotlin (2018/06/18追記)

qiita.com

android studio 3.1 Canary6 からはkaptも書かなくて良くなったらしい

因みに、LiveData(Lifecycle)のクラスを使うには appcompat 26.1.0以上が必要。

これ書いてるドキュメントが公式1文しかなくてだいぶハマってた。。。*3

medium.com


TLメモ(SNS連携)

SNS連携におけるクローズドAPI or 機能に関して

自分的考察

*1:昔はwrap_content指定が聞かなかったのが効くように修正したタイミング

*2:前述の方々もRx&kotlin使いの方のようですし

*3:最新のASで新規プロジェクト作ったら最新使われるから気にする人ほとんどいないよなー<遠い目