Android Kotlin基礎講座 05.2: LiveDataとLiveData observers
目次
まとめ
LiveData
- LiveDataはライフサイクル対応の監視可能なデータホルダークラスです。Androidアーキテクチャコンポーネントの一つです。
- データが更新された際に自動でUIを更新するためにLiveDataを使うことができます。
- LiveDataは監視可能です。これはアクティビティやフラグメントといったオブザーバーがLiveDataオブジェクトに保持されたデータに変更があった場合に通知されるということを意味しています。
- LiveDataはデータを保持します。どんなデータに対しても用いることができるラッパーです。
- LiveDataはライフサイクル対応です。これはSTARTEDやRESUMEDのようなアクティブなライフサイクル状態にあるオブザーバーのみを更新することを意味しています。
LiveDataの追加方法
- ViewModel内のデータ変数の型をLiveDataまたはMutableLiveDataに変更します。
MutableLiveDataは値が変更可能なLiveDataオブジェクトです。
MutableLiveDataは汎用クラスなので、それが保持するデータの型を指定する必要があります。
- LiveDataによって保持されているデータの値を変更するためには、setValue()メソッドをLiveDataオブジェクト上で使います。
LiveDataをカプセル化する方法
- ViewModel内のLiveDataは編集可能であるべきです。ViewModelの外部からはLiveDataは読み込みのみ可能であるべきです。Kotlinバッキングプロパティを用いることでこれを実装することができます。
- Kotlinバッキングプロパティはゲッターからオブジェクトそのものではない何かを返すことができます。
- LiveDataをカプセル化するためには、プライベートなMutableLiveDataをViewModelの中で使い、ViewModelの外部にはLiveDataバッキングプロパティを返すようにします。
監視可能なLiveData
- LiveDataはオブザーバーパターンに従っています。”監視される側”はLiveDataオブジェクトで、オブザーバーはフラグメントのようなUI controllerのメソッドになります。LiveData内にラッピングされているデータに変更があった場合、UI controllerのオブザーバーメソッドは通知されます。
- LiveDataを監視可能にするためには、オブザーバーオブジェクトをオブザーバー(アクティビティやフラグメント)内のLiveDataの参照に取り付けます。observe()メソッドを用います。
- このLiveDataオブザーバーパターンはViewModelからUI controllerに情報を伝達するために使われます。
お疲れさまでした。次の講座は 5.3 ViewModelとLiveDataのデータバインディングです。
おすすめ書籍
Kotlinの文法をまず学びたい!という方には以下の書籍がおすすめです。Kotlinは日本語書籍がまだ豊富とは言えない状況ですが、細かく解説されており、Kotlin入門者のかたでもつまずくことなく学習できると思います。
[itemlink post_id=”1743″]実際にアプリを作りながら覚えていきたい!という方には以下もお勧めです。はじめに上の書籍で文法をさらっと学んでから取り組むのがお勧めです。
[itemlink post_id=”1745″]