2019年12月21日土曜日

Android: KotlinとRecyclerViewとViewModelとDataBinding

思いついたアプリを作ろうと思ったが、以前のMatch Scorerは古いデザインで作成したので、せっかくだから最新のデザインアーキテクチャで作ろうと思った。で、いつものように掲題のキーワードからググったわけだ。ところが検索の上部に出てくるのは役に立たないものばかり。こっちも分からないものだから、書いてある通りにコーディングやコピペして作ってもほとんどのものが動かない。ホントにフラストレーションがたまった。
で、行き着いたらあっという間に解決してくれたのは、本家GoogleのサイトCodeLabsだった。
どうもGoogleが定期的に行っているコンファレンスのデータが置いてあるらしい。
Codelabsには様々なチュートリアルが置かれていて素晴らしいサイトで、知ってはいたけどJavaだけかと思っていた。Kotlinでのチュートリアルは、ここからたどれる。ぐぐってもどうして出てきてくれないのか。お金にならんからか!?
さて、ViewModelDataBindingは便利な機能だが、LiveDataというもう一つまたViewModelとは異なる毛色のものが出てきてややこしい。ViewModelとかLiveDataはデバイスのオリエンテーションが変化した時にViewを消去して書き直すが、View内部のデータは保持されなかったのが、ViewModel+LiveDataを使うことでViewのスコープから外れてもデータが保持される仕組みを提供されたわけだ。このスコープをうまく使うと、異なるActivity, Fragmentでデータを共有することが出来る便利な機能だ。ViewModelProvider経由で使うとインスタンスがSingletonのようになる。
RecyclerViewとこれらを使うのにアタマが混乱していたのでこれとは別の噺なんだが。RecyclerViewはListViewよりも優秀だというので使って見たのだけれど、Listの中のItemに対するクリック処理をListenするのが「ちゃんと動くのが」全然見つからなかったけど、やはりCodeLabsのここにあった。ググったら出せよ。
Androidの世界はものすごく速く変化している。下手にググらずCodelabsに行くのがよろしい。CodeLabs内でも迷子になるのだけれどもね。

0 件のコメント:

コメントを投稿