こちらの方のRecyclerViewのアイテムクリックに関する記事があり、素直な感じで分かりやすく、良いなと思いました。
RecyclerViewのアイテムクリック
http://qiita.com/ushi3_jp/items/ba0df2df6b0b77278f14
今日紹介するのはAOSP(Android Open Source Project)に上がっているクリックリスナの付け方についてです。
一応AOSPにあがっているので少し安心できるのかなと思っています。
ActivityでRecyclerViewを利用するところでこんな感じで書きます。
recyclerView.setAdapter(new MyAdapter(this, Cheeses.sCheeseStrings) {
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
final MyAdapter.ViewHolder vh = super.onCreateViewHolder(parent, viewType);
vh.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final int pos = vh.getAdapterPosition();
// ここにクリックした時の処理を書く
}
});
return vh;
}
});
具体的にはRecyclerView.Adapterを継承して作ったアダプタークラスを更に無名クラスで継承して、onCreateViewHolderをオーバーライドして、そのメソッド内でsuper.onCreateViewHolder()を呼んで、帰ってきたViewHolderのitemViewにリスナーを付ける形です。
メリットとしては実装量が少ない、Adapterにリスナーの実装を書かなくて良いなどでしょうか。
この方式も利用することも検討してみると良いかもしれません。
最初に書いた記事を真似して、ActivityにOnClickListenerを実装させる形式であれば、OnClickListenerは一つで済みそうですね