Android Kotlin基礎講座 05.4: LiveDataの変換

まとめ

LiveDataの変換

  • LiveDataの結果を変換したい場合があります。例えば、日付を表すDate stringを”時:分:秒”の形にフォーマットしたかったり、リスト自体を返すのではなく、リストに含まれる要素の数を返したかったりする場合です。LiveDataを変換したい場合は、Transformationsクラスのヘルパーメソッドを利用できます。
  • Transformations.map()メソッドを使うとLiveDataのデータを簡単に操作し、別のLiveDataオブジェクトを返すようにすることができます。推奨される利用方法はTransformationsクラスを使っているデータフォーマットロジックを、UIデータと共にViewModel内に置くことです。

TextViewにおける変換結果の表示

  • ViewModel中のLiveDataとしてソースとなるデータが定義されていることを確認してください。
  • newResultのような変数を定義してください。変換を実行するためにTransformation.map()を使い、先ほどの変数に結果を代入します。
val newResult = Transformations.map(someLiveData) { input ->
   // Do some transformation on the input live data
   // and return the new value
}
  • TextViewを含んでいるレイアウトファイルがViewModel用の<data>変数を宣言していることを確認してください。
<data>
   <variable
       name="MyViewModel"
       type="com.example.android.something.MyViewModel" />
</data>
  • レイアウトファイル中で、ViewModelのnewResultのバインディングにTextViewのtext属性をセットしてください。以下のようになります。
android:text="@{SomeViewModel.newResult}"

日付のフォーマット

  • DateUtils.formatElapsedTime()ユーティリティメソッドはミリ秒単位のlong型数値を取り、それをMM:SSという形のstring型にフォーマットします。

お疲れさまでした。次の講座は 6.1 Roomデータベースを作成するです。

おすすめ書籍

Kotlinの文法をまず学びたい!という方には以下の書籍がおすすめです。Kotlinは日本語書籍がまだ豊富とは言えない状況ですが、細かく解説されており、Kotlin入門者のかたでもつまずくことなく学習できると思います。

[itemlink post_id=”1743″]

実際にアプリを作りながら覚えていきたい!という方には以下もお勧めです。はじめに上の書籍で文法をさらっと学んでから取り組むのがお勧めです。

[itemlink post_id=”1745″]