Android Kotlin基礎講座 07.2:DiffUtilとRecycleViewのデータバインディング

Android Kotlin基礎講座

まとめ

DiffUtil:

  • RecyclerViewはDiffUtilというクラスを持っており、これは二つのリストの違いを計算するために使われます。
  • DiffUtilは二つのリストの違いを発見するために継承するItemCallbackというクラスを持っています。
  • ItemCallbackクラス内では、areItemsTheSame()メソッドとareContentsTheSame()メソッドをオーバーライドする必要があります。

ListAdapter:

  • 自由にリストを管理したい際には、RecyclerView.Adapterの代わりに、ListAdapterクラスを使うことができます。しかしながら、ListAdapterを使う場合は、他のレイアウト用の独自のアダプターを書く必要があります。そのため、この記事ではそのやり方を解説しました。
  • Android Studioでインテンションメニューを開くには、アイテムのコードの上にカーソルを当てて、Alt+Enter(Macの場合Option+Enter)を押します。このメニューはコードをリファクタリングするときや、実装するメソッド用の型を作成したいときに特に便利です。このメニューはコードの文脈を自動で判断するので、正しいメニューを得るためには、必要な個所に正確にカーソルを当てる必要があります。

データバインディング:

  • データをビューにバインドするためには、アイテムレイアウト内でデータバインディングを使用します。

バインディングアダプター:

  • 以前まではデータからstringを生成するためにはTransformationsを使っていました。別の型や複雑な型のデータをバインドする必要がある場合は、データバインディングがそれらを扱えるようにするためのアダプターを作成します。
  • バインディングアダプターを宣言するためには、アイテムとビューを受け取るメソッドを定義し、それを@BindingAdapterでアノテーションします。Kotlinでは、View上の拡張関数としてバインディングアダプターを記すことができます。アダプターが適合させるプロパティの名前を渡してください。例として、以下のようになります。
@BindingAdapter("sleepDurationFormatted")
  • XMLレイアウトのほうでは、バインディングアダプターと同じ名前のappプロパティを設定します。データの変数を渡します。例として、以下のようになります。
.app:sleepDurationFormatted="@{sleep}"

お疲れさまでした。次の講座は 7.3 RecyclerViewによるグリッドレイアウトです。

おすすめ書籍

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

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

コメント

プロフィール

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

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

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