Which is the most recommended way of handling click on RecyclerView
items?
recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
private RecyclerView.OnItemTouchListener itemTouchListener;
@Override
public boolean onInterceptTouchEvent(@NonNull RecyclerView recyclerView, @NonNull MotionEvent motionEvent) {
return false;
}
@Override
public void onTouchEvent(@NonNull RecyclerView recyclerView, @NonNull MotionEvent motionEvent) {}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean b) {}
});
Or setting a click listener on an item view inside the adapter?
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Do stuff
}
});
A Best and efficient way to get a click of recycler view item is by using interface as below:
1) First, define one interface as below
public interface OnListItemClick {
void onClick(View view, int position);
}
2) Now, set it from your fragment or activity
OnListItemClick onListItemClick = new OnListItemClick() {
@Override
public void onClick(View view, int position) {
// you will get click here
// do your code here
}
};
youradaptor.setClickListener(onListItemClick);
3) Now create one method in your adapter
public void setClickListener(OnListItemClick context) {
this.onListItemClick = context;
}
4) Now, from your itemview click use as below
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onListItemClick.onClick(view, getAdapterPosition()); // passing click to interface
}
});