Je suis conscient qu'il y a beaucoup de réponses, mais je pensais que je pourrais également en fournir la mise en œuvre. (Tous les détails peuvent être trouvés sur une autre question à laquelle j'ai répondu ).
Ainsi, pour ajouter un écouteur de clics, votre ViewHolder
classe interne doit être implémentée View.OnClickListener
. Cela est dû au fait que vous définirez un OnClickListener
sur le itemView
paramètre du ViewHolder
constructeur de. Permettez-moi de vous montrer ce que je veux dire:
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());
}
}
}
Les seules autres choses que vous devez ajouter sont une interface personnalisée pour votre Adapter
et une méthode de définition:
private OnEntryClickListener mOnEntryClickListener;
public interface OnEntryClickListener {
void onEntryClick(View view, int position);
}
public void setOnEntryClickListener(OnEntryClickListener onEntryClickListener) {
mOnEntryClickListener = onEntryClickListener;
}
Votre nouvelle prise en charge des clics Adapter
est donc terminée.
Maintenant, utilisons-le ...
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
}
});
C'est essentiellement la façon dont vous configurez une normale Adapter
, sauf que vous utilisez votre méthode de définition que vous avez créée pour contrôler ce que vous ferez lorsque votre utilisateur cliquera sur un élément de liste particulier.
Vous pouvez également consulter un ensemble d'exemples que j'ai faits sur ce Gist sur GitHub:
https://gist.github.com/FarbodSalamat-Zadeh/7646564f48ee708c1582c013e1de4f07