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 ViewHolderclasse interne doit être implémentée View.OnClickListener. Cela est dû au fait que vous définirez un OnClickListenersur le itemViewparamètre du ViewHolderconstructeur 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 Adapteret 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 Adapterest 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