Listview has the callbacks for single click and long click, but the new concept RecyclerView haven't such things like setOnItemClickListener and setOnItemLongClickListener.
RecyclerView.OnItemTouchListener is the key of working with SingleClick and LongClick and Gesture detector will respond to single click when motion event with SingleTab or long click when motion event with long press by user. Below the few lines of code helps you to work with single click and long click in Recycler View.
public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
    public interface OnItemClickListener {
        void onItemClick(View view, int position);
        void onItemLongClick(View view, int position);
    }
    private OnItemClickListener mListener;
    private GestureDetector mGestureDetector;
    public RecyclerItemClickListener(Context context, final RecyclerView recyclerView, OnItemClickListener listener) {
        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 view, MotionEvent e) {
        View childView = view.findChildViewUnder(e.getX(), e.getY());
        if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
            mListener.onItemClick(childView, view.getChildAdapterPosition(childView));
        }
        return false;
    }
    @Override
    public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) {
    }
    @Override
    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
    }
}
 
With using addOnItemTouchListener will provide position and view as parameters for single click and long click in your activity.
mRecyclerView.addOnItemTouchListener(new RecyclerItemClickListener(YourActivity.this, mRecyclerView, new RecyclerItemClickListener.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                
        // Single item click
                Toast.makeText(YourActivity.this, "Single click event",Toast.LENGTH_SHORT).show();
            }
            @Override
            public void onItemLongClick(View view, int position) {
                // Long item click
                Toast.makeText(YourActivity.this, "Long click event",Toast.LENGTH_SHORT).show();
            }
}));
 
                       
                    
0 Comment(s)