Android Kotlin基礎講座 05.3: ViewModelとLiveDataのデータバインディング
目次
この講座について
この記事はAndroid Kotlin基礎講座の一部です。これ以外のAndroid Kotlin基礎講座(全10回)も一緒に受講することでAndroidアプリの開発手法、およびKotlinの基礎知識を学ぶことができます。全講座はAndroid Kotlin基礎講座にリスト化されていますので参考にしてください。
またこの記事ではGoogle Developers Training teamによってGoogle Codelabsに公開されているAndroid Kotlin Fundamentals courseを日本語に翻訳しつつ、筆者の考察も交えながら発信しています。オリジナルのサイト(英文)はこちら。
この記事はViewModelとLiveDataについて解説している4つのシリーズ記事のうちの一つです。ViewModelとLiveDataはAndroidアーキテクチャコンポーネントです。Androidアーキテクチャコンポーネントとは頑丈、テスト可能、保守可能なアプリをデザインする手助けとなるライブラリおよびコンポーネントのことです。
これら4つの記事では、GuessTheWordというアプリを使って作業していきます。順序立ててタスクをこなしていく構成になっているので、4つの記事を順番に進めていくことをお勧めします。
- 5.1: ViewModelとViewModelProvider
- 5.2: LiveDataとLiveData observers
- 5.3: ViewModelとLiveDataのデータバインディング
- 5.4: LiveDataの変換
イントロダクション
この講座の前回の記事では、GuessTheWordアプリのコードを改良しました。ここまででアプリは、ViewModelオブジェクトを使い、画面回転などの端末のコンフィグレーション変化のあとでもデータを保持することができるようになっています。また監視可能なLiveDataを使いし、監視されているデータに変化があった際に自動でビューに通知がいくようにもしました。
この記事では、引き続きGuessTheWordアプリを使って作業していきます。アプリのビューをViewModelクラスに結合し、レイアウト上のビューがViewModelオブジェクトと直接やり取りできるようにします。(今まではアプリのフラグメントを通して、ビューはViewModelと間接的にやり取りしてきました)ViewModelオブジェクトとデータを結合した後は、フラグメントのクリックハンドラーは必要なくなります。
さらにGuessTheWordアプリでLiveDataをUIにデータの変化を通知するためのデータバインディングソースとして利用させるようにしていきます。LiveDataオブザーバーメソッドは用いません。
前提知識
- Kotlinによる基本的なアプリの作り方
- アクティビティとフラグメントのライフサイクルについて
- ViewModelオブジェクトの使い方
- ViewModel内のLiveDataを使ってデータを保存する方法
- LiveDataのデータの変化を監視するためのオブザーバーメソッドの追加方法
この講座で学べること
- データバインディングライブラリの使い方
- ViewModelとデータバインディングを統合する方法
- Livedataとデータバインディングを統合する方法
- フラグメントのクリックリスナーを置き換えるためのリスナーバインディングの使い方
- データバインディング式にstringフォーマットを追加する方法
概要
- GuessTheWordアプリのレイアウト内のビューはUI controller(フラグメント)を用いて情報を中継することで、ViewModelオブジェクトと間接的にやり取りしています。この記事ではビューをViewModelと結合させることでビューがViewModelオブジェクトと直接やり取りできるようにします。
- データバインディングソースとしてLiveDataを使うようにアプリを変更していきます。この変更の後はLiveDataオブジェクトがデータの変化に関してUIに通知し、LiveDataオブザーバーメソッドは必要なくなります。
完全無料で通えるプログラミングスクール
プログラミング学習はどうしても一人だとつまづいてしまう時がきます。調べればわかることも少なくないですが、最初のうちは調べ方もわからないことが多いため、あまり効率的ではありません。
効率的かつ挫折せずにプログラミングを学習したい方はスクールを検討してみるのも一つの手です。
中には無料で通えるスクールや、就職保証をしてくれるスクールなどもあるので、きっとあなたの目的に応じて最適のスクールが見つかります!以下の記事で評判がよく特におすすめのスクールをいくつかピックアップしているので、スクール選びで後悔したくない方は御覧ください!