Я знаю, що відповідей дуже багато, але я подумав, що, можливо, я б також також забезпечив свою реалізацію. (Повні деталі можна знайти в іншому запитанні, на яке я відповів ).
Отже, щоб додати слухача клацань, ваш внутрішній ViewHolder
клас повинен реалізувати View.OnClickListener
. Це тому , що ви подасте OnClickListener
до itemView
параметру ViewHolder
конструктора «S. Дозвольте мені показати, що я маю на увазі:
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());
}
}
}
Єдине, що вам потрібно додати, - це користувальницький інтерфейс для вашого Adapter
методу та налаштування :
private OnEntryClickListener mOnEntryClickListener;
public interface OnEntryClickListener {
void onEntryClick(View view, int position);
}
public void setOnEntryClickListener(OnEntryClickListener onEntryClickListener) {
mOnEntryClickListener = onEntryClickListener;
}
Отже, ваша нова, що підтримує клік Adapter
завершена.
Тепер давайте скористаємося ...
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
}
});
Це в основному, як ви налаштували нормальну Adapter
, за винятком того, що ви використовуєте створений вами метод налаштування, щоб контролювати, що ви будете робити, коли користувач натисне певний елемент списку.
Ви також можете переглянути набір прикладів, які я зробив на цьому Gist на GitHub:
https://gist.github.com/FarbodSalamat-Zadeh/7646564f48ee708c1582c013e1de4f07