Skip to content

Instantly share code, notes, and snippets.

@leeyc09
Last active February 3, 2016 07:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save leeyc09/95f582c7531b4c916138 to your computer and use it in GitHub Desktop.
Save leeyc09/95f582c7531b4c916138 to your computer and use it in GitHub Desktop.
public static class RecyclerViewOnItemClickListener extends RecyclerView.SimpleOnItemTouchListener {
private OnItemClickListener mListener;
private GestureDetector mGestureDetector;
public RecyclerViewOnItemClickListener(Context context, final RecyclerView recyclerView, OnItemClickListener listener) {
this.mListener = listener;
mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent e) {
return true;
}
@Override
public void onLongPress(MotionEvent e) {
View childView = recyclerView.findChildViewUnder(e.getX(), e.getY());
if(childView != null && mListener != null){
mListener.onItemLongClick(childView, recyclerView.getChildAdapterPosition(childView));
}
}
});
}
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
View child = rv.findChildViewUnder(e.getX(), e.getY());
if (child != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
mListener.onItemClick(child, rv.getChildAdapterPosition(child));
return true;
}
return false;
}
public interface OnItemClickListener {
void onItemClick(View v, int position);
void onItemLongClick(View v, int position);
}
}
How to Use?
mRecyclerView.addOnItemTouchListener(new RecyclerViewOnItemClickListener(getActivity(), mRecyclerView,
new RecyclerViewOnItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View v, int position) {
Log.d(TAG, "click");
}
@Override
public void onItemLongClick(View v, int position) {
Log.d(TAG, "long click");
}
}
));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment