Android Kotlin基礎講座 07.4:RecyclerViewのタップ処理

まとめ

RecycleView内のアイテムのクリックに反応させるようにするためには、ViewHolder内でリストアイテムにクリックリスナーを取り付け、ViewModel内でクリックを処理します。

RecycleView内のアイテムのクリックに反応させるようにするためには、以下のことをする必要があります。

  • ラムダ式を受け取り、それをonClick()関数に代入するリスナークラスを作成する。
class SleepNightListener(val clickListener: (sleepId: Long) -> Unit) {
   fun onClick(night: SleepNight) = clickListener(night.nightId)
}
  • クリックリスナーをビューに設定する。
android:onClick="@{() -> clickListener.onClick(sleep)}"
  • クリックリスナーをアダプターのコンストラクタ、ビューホルダーに渡し、バインディングオブジェクトに追加する。
class SleepNightAdapter(val clickListener: SleepNightListener):
       ListAdapter<DataItem, RecyclerView.ViewHolder>(SleepNightDiffCallback()
holder.bind(getItem(position)!!, clickListener)
binding.clickListener = clickListener
  • アダプターを作成し、RecyclerViewを表示するフラグメント内で、ラムダ式をアダプターに渡してクリックリスナーを定義する。
val adapter = SleepNightAdapter(SleepNightListener { nightId ->
      sleepTrackerViewModel.onSleepNightClicked(nightId)
})
  • ビューモデル内にクリックハンドラーを実装する。リストのアイテムのクリックでは、一般的には詳細フラグメントに遷移します。

お疲れさまでした。次の講座は 7.5 RecyclerViewのヘッダーです。

おすすめ書籍

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

[itemlink post_id=”1743″]

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

[itemlink post_id=”1745″]