update.みなさんRecyclerView使ってますか?私はまだちゃんと使ったことがありません。RecyclerViewはListViewの代替じゃないとかonClickListenerがないから面倒とか難しそうな印象の記事が多かったのですが、試しに使ってみたら基本的な使い方はそんなに難しくなかったので忘れないように記します。整理しきれてないのでちょっと煩雑です。【Android】RecyclerViewのクリックイベント特にRecyclerViewの基本は図もあってめちゃくちゃわかりやすいのでオススメです。(ありがとうございます。)できるもの適当なテキストをリスト表示してタップすると画面下部に適当なメッセージを出すアプリ。手順1.リストの一つのアイテムを表すレイアウトとクラスを作るlist_item.xmlアイテム一つを表すレイアウト。固定のアイコンとタイトル、詳細をテキストで並べます。特別なことはないですが強いていうなら一番親のレイアウトの高さをmatch_parentではなくwrap_contentや任意の高さにするように気をつけましょう。</LinearLayout></android.support.constraint.ConstraintLayout>RowModel.ktリストのアイテム一つを表すクラス。Modelとつけたけどdataとかの方がいい可能性もある。今回はタイトルと詳細をStringで持たせます。アイテムと同じ数だけ存在することになるはず。""}2.ViewHolderを作る1クラスだけですViewHolder.ktアイテムのViewを保持します。アイテムと対になって存在するイメージ。(実際はリサイクルされているようなので同じ数ではない?)よく考えると名前そのまんまですね。今回はタイトルと詳細のViewを生成して保持してます。ここ本当にあってるか自信ないです。あとで調べます...追記:ViewHolderの目的がfindViewByIdの結果をキャッシュすることでコストを減らすことのようなのでこれでよさそう。値とデータをバインドをするメソッドをここに書いても良さそう。itemView.findViewById(R.id.row_detail)}3.ViewAdapterを作るこれも一ファイルです。ViewAdapter.ktViewHolderを生成したりに生成したViewHolderにViewModelをセットしたりする。一つのListに対して一つ存在する。今回はクリックのリスナーも一緒にセットしています。ここが難しそうに見えてたんですが実際書いてみると全然難しくないです。コンストラクタにリスト表示するRowModelのリストとタップを検出するためのリスナーを渡されるようにします。(リスナーはこのクラスの下部にinterfaceを定義してあります)onCreateViewHolder()でlist_itemのviewを作ってそれを元に先ほどのViewHolderを生成しreturnします。onBindViewHolder()ではpositionをListのindexとして、ViewHolderに値をセットします。考えたらここでViewHolderにRowModelを渡してあげてもいいかもしれません。今回はここでクリックリスナーもセットしています。リスナーについては公式の例をまだ見つけられてないので何が正しいのかあんまわかっていませんがとりあえずこれが楽だと思いました。getItemCount()ではlistのサイズを返してあげる必要があるようです。}}4.レイアウトにRecyclerViewを追加main_activity.xmlに以下のようなRecyclerViewを追加します。/>5.activityやfragmentで使うactivityならOnCreate、fragmentならonViewCreatedとかで呼びます(fragmentの方、そこで呼ぶのが正しいかはちょっとまだわかってないです)今回はfragmentで呼んだのでonViewCreatedだけ抜粋。this@myFragmentにしてあるのはmyFragmentのonClickRow()をリスナーのそれと同じ名前で宣言したからです。別の名前にしても良かったんですが初心者が引っかかりがちなのであえて残してあります。Extensionsを使っているのでfindViewByIdがないです。