Saya sadar ada banyak jawaban, tetapi saya pikir saya mungkin hanya memberikan implementasi saya juga. (Rincian lengkap dapat ditemukan pada pertanyaan lain yang saya jawab ).
Jadi, untuk menambahkan pendengar klik, ViewHolder
kelas batin Anda perlu diimplementasikan View.OnClickListener
. Hal ini karena Anda akan mengatur OnClickListener
dengan itemView
parameter ViewHolder
's konstruktor. Biarkan saya menunjukkan kepada Anda apa yang saya maksud:
public class ExampleClickViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView text1, text2;
ExampleClickViewHolder(View itemView) {
super(itemView);
// we do this because we want to check when an item has been clicked:
itemView.setOnClickListener(this);
// now, like before, we assign our View variables
title = (TextView) itemView.findViewById(R.id.text1);
subtitle = (TextView) itemView.findViewById(R.id.text2);
}
@Override
public void onClick(View v) {
// The user may not set a click listener for list items, in which case our listener
// will be null, so we need to check for this
if (mOnEntryClickListener != null) {
mOnEntryClickListener.onEntryClick(v, getLayoutPosition());
}
}
}
Satu-satunya hal lain yang perlu Anda tambahkan adalah antarmuka khusus untuk Anda Adapter
dan metode penyetel:
private OnEntryClickListener mOnEntryClickListener;
public interface OnEntryClickListener {
void onEntryClick(View view, int position);
}
public void setOnEntryClickListener(OnEntryClickListener onEntryClickListener) {
mOnEntryClickListener = onEntryClickListener;
}
Jadi pendukung klik baru Anda Adapter
sudah lengkap.
Sekarang, mari kita gunakan ...
ExampleClickAdapter clickAdapter = new ExampleClickAdapter(yourObjects);
clickAdapter.setOnEntryClickListener(new ExampleClickAdapter.OnEntryClickListener() {
@Override
public void onEntryClick(View view, int position) {
// stuff that will happen when a list item is clicked
}
});
Ini pada dasarnya bagaimana Anda mengatur normal Adapter
, kecuali bahwa Anda menggunakan metode setter yang Anda buat untuk mengontrol apa yang akan Anda lakukan ketika pengguna mengklik item daftar tertentu.
Anda juga dapat melihat sekumpulan contoh yang saya buat pada Intisari ini di GitHub:
https://gist.github.com/FarbodSalamat-Zadeh/7646564f48ee708c1582c013e1de4f07