content: package com.amirarcane.sample;
  
  import android.content.Context;
  import android.support.v7.widget.RecyclerView;
  import android.view.GestureDetector;
  import android.view.MotionEvent;
  import android.view.View;
  
  public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
  	private static final String TAG = "RecyclerItemClickListe";
  	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.getChildPosition(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.getChildPosition(childView));
  		}
  
  		return false;
  	}
  
  	@Override
  	public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) {
  	}
  
  	@Override
  	public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
  
  	}
  
  	public interface OnItemClickListener {
  		void onItemClick(View view, int position);
  
  		void onItemLongClick(View view, int position);
  	}
  }