Android Kotlin基礎講座 05.2: LiveDataとLiveData observers

Android Kotlin基礎講座

この講座について

この記事は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つの記事を順番に進めていくことをお勧めします。

イントロダクション

前回の記事では、GuessTheWordアプリにおいて、アプリのデータをコンフィグレーション変化の後でも維持できるようにするためにViewModelを使用しました。
この記事ではViewModelクラスのデータとLiveDataを統合する方法を学習します。LiveDataはAndroidアーキテクチャコンポーネントの一つで、下層にあるデータベースが変化したときにビューに通知してくれるデータオブジェクトをビルドしてくれます。

LiveDataクラスを使うためには”observers(オブザーバー)”というアプリのデータの変化を監視してくれるもの(アクティビティやフラグメント)をセットアップします。LiveDataはライフサイクル対応なので、アクティブなライフサイクル状態の中にあるアプリコンポーネントオブザーバーのみを更新します。

前提知識

  • Kotlinによる基本的なアプリの作り方
  • アプリの画面間での遷移のさせ方
  • アクティブとフラグメントのライフサイクルについて
  • ViewModelオブジェクトの使い方
  • ViewModelPrivider.Factoryインターフェースを使ったViewModelオブジェクトの作り方

この講座で学べること

  • LiveDataオブジェクトの活用方法
  • ViewModelに保存されているデータにLiveDataを追加する方法
  • MutableLiveDataの使い時と使い方
  • LiveDataの変化を監視するためのオブザーバーメソッドの追加方法
  • バッキングプロパティを使ってLiveDataをカプセル化する方法
  • UI controllerと対応するViewModel間でやり取りする方法

概要

  • GuessTheWordアプリの単語と得点用にLiveDataを使う
  • 単語か得点が変化したときに通知するオブザーバーを追加する
  • 変化した値を表示するようにテキストビューを更新する
  • LiveDataオブザーバーパターンを使ってゲーム終了イベントを追加する
  • Play Againボタンの実装

完全無料で通えるプログラミングスクール

プログラミング学習はどうしても一人だとつまづいてしまう時がきます。調べればわかることも少なくないですが、最初のうちは調べ方もわからないことが多いため、あまり効率的ではありません。

効率的かつ挫折せずにプログラミングを学習したい方はスクールを検討してみるのも一つの手です。

中には無料で通えるスクールや、就職保証をしてくれるスクールなどもあるので、きっとあなたの目的に応じて最適のスクールが見つかります!以下の記事で評判がよく特におすすめのスクールをいくつかピックアップしているので、スクール選びで後悔したくない方は御覧ください!

コメント

プロフィール

プロフィール
コードラボJP

大学卒業後SEに就職、現在は退職しフリーランスとして活動中。
『初心者でも挫折せずに一人でプログラミングを学べる』をモットーに、コードラボJPを開設
お問い合わせ等はcodelabsjp@gmail.comまで

コードラボJPをフォローする
タイトルとURLをコピーしました