Android Kotlin基礎講座 06.3:Livedataを使ってボタンの状態をコントロールする
目次
まとめ
睡眠の質計測の実装は、まるで親しみのある音楽の一部分を別のキーで演奏するようなものです。詳細が変わっても、以前までの記事で行った下地にあるパターンは同じままです。これらのパターンを認識できるようになるとコーディングはより早くなります。既存のアプリからコードを再利用できるためです。以下はここまででこの講座で使われたパターンのいくつかです。
- ViewModelとViewModelFactoryを作成し、データソースをセットアップする。
- ナビゲーションのトリガー。役割を分割するために、クリックハンドラーはビューモデルに置き、ナビゲーションはフラグメントに置く。
- 状態変化を監視し、それに対応するためにLiveDataのカプセル化を使う。
- LiveDataを利用したtransformationの利用。
- シングルトンデータベースの作成。
- データベース操作用のコルーチンのセットアップ。
ナビゲーションのトリガー
ナビゲーションファイルの中でフラグメント間の起こりうるナビゲーションパスを定義します。あるフラグメントから別のフラグメントに遷移する際のトリガーを実装するにはいくつかの方法があります。
- 遷移先フラグメントのナビゲーショントリガーとなるonClickハンドラーを定義する。
- または、あるフラグメントから別のフラグメントへのナビゲーションを有効化する。
- ナビゲーションが行われるべきタイミングを記録するためのLiveDataを定義する。
- LiveDataの値を監視するオブザーバーを取り付ける。
- これで遷移が必要になったとき、または遷移が完了したタイミングで値が変更されます。
android:enabled属性の設定
- android:enabled属性はTextView内に定義されており、Buttonを含む、全てのサブクラスに受け継がれています。
- android:enabled属性はViewが有効か無効かを決定します。”enabled”の意味はサブクラスごとに異なります。例として、有効でないEditTextでは、ユーザーはそれに含まれるテキストを編集することができず、有効でないButtonではユーザーはボタンをタップすることができません。
- enabled属性はvisibility属性とは異なります。
- transformation mapを使って、他のオブジェクトや変数の状態に基づいて、ボタンのenabled属性の値を設定することができます。
この記事でカバーされている別のポイント:
- ユーザーへの通知をトリガーする際にも、ナビゲーションのトリガーの際に使った手法と同じ手法を用いることができます。
- ユーザーへの通知にはSnackbarを使うことができます。
お疲れさまでした。次の講座は 7.1 RecyclerViewの基礎です。
おすすめ書籍
Kotlinの文法をまず学びたい!という方には以下の書籍がおすすめです。Kotlinは日本語書籍がまだ豊富とは言えない状況ですが、細かく解説されており、Kotlin入門者のかたでもつまずくことなく学習できると思います。
[itemlink post_id=”1743″]実際にアプリを作りながら覚えていきたい!という方には以下もお勧めです。はじめに上の書籍で文法をさらっと学んでから取り組むのがお勧めです。
[itemlink post_id=”1745″]