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

Android Kotlin基礎講座

まとめ

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入門者のかたでもつまずくことなく学習できると思います。

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

コメント

プロフィール

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

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

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