【Android開発】KotlinでRecyclerViewとCardViewを使ってリストを表示させる方法(3)

前回はRecyclerView、CardViewを使って、リストを表示させるところを実装していきました。

今回は、ユーザのタップを検知して、詳細画面へ遷移するところを実装していきます。

実装するものはこんな感じ。

  • ViewHolderにリスナー設定を追加
  • リスナーがタップされた時、詳細画面へ遷移する処理を追加
  • Enumクラスの追加
  • DetailActivityの追加

では、さっそく作っていきましょう。

ViewHolderにリスナー設定を追加

RecyclerViewにはリスナーの登録はできません。

そのため、タップを検知するために、ViewHolderにリスナーを登録していく必要があります。

Viewholderの生成は、AdapterのonCreateViewHolderにて行っているので、以下のようにリスナーの登録を行います。

 

その際に、タップされた行を把握しないと、どれがタップされたのかが判定できないので、タップされた行(position)を取得します。

その後は、タップ後に画面を表示する処理を行うメソッドをCallします。

こちらのメソッドはOverrideして実装するので、中身を空にしてOKです。

※ ここでの実装でも構わないのですが、Adapterの責務にタップ時の挙動までを負わせるのが微妙なところなので、Activityでの実装としてます。

リストがタップされた時に詳細画面へ遷移させる

Adapterを作成する際に、タップ時に処理を行う処理を追加します。

先程、作成したメソッドをOverrideして、タップされた行の情報を取得してDetailActivityへの遷移をします。

Enum(列挙型)クラスの追加

順番が前後してしまいますが、Enumクラスを実装します。

Enumとは、列挙定数を自分で作ることができるものです。

Activity間での情報受け渡しの場合、Keyを設定しますが、そのKey値を個別に設定するのではなく、定数として設定して、受け渡しを行う場合などでよく使われる方法です。

適当なファイルを作り、そこに定義すれば利用することが可能です。

DetailActivityの追加

最後に、DetailActivityの追加です。

特別なことはしておらず、引数を受け取って、画面に値を設定しています。

ちょっと話がずれてしまうかもしれませんが、オプション(画面上部の戻る←)が選択された場合の処理も追加してあります。

レイアウト定義も載せておきます。

【content_detail.xml】

以上で説明は終了!

こちらを全部実装すれば

を表示して、タップ後に

に遷移することができます。

今回はごく簡単に説明したため、かなりの部分は端折っています。

Activityのライフサイクルとかは無視しているので、運用に耐えうるものでもありません。

理解してしまえば大したことはないのですが、RecyclerView、CardViewはとっかかりづらい部分が多いです。

まずは全体、動くまでの流れを理解してもらい、そこから次のステップに進んでもらいたいですね!