package io.pivotal.arca.adapters;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
public class RecyclerItemClick implements RecyclerView.OnItemTouchListener {
public interface Listener {
public void onItemClick(RecyclerView recyclerView, View view, int position, long id);
public void onItemLongClick(RecyclerView recyclerView, View view, int position, long id);
}
private Listener mListener;
private GestureDetector mGestureDetector;
public RecyclerItemClick(final Context context, final RecyclerView recyclerView, final Listener listener) {
mListener = listener;
mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(final MotionEvent event) {
return true;
}
@Override
public void onLongPress(final MotionEvent event) {
final View childView = recyclerView.findChildViewUnder(event.getX(), event.getY());
if (childView != null && mListener != null) {
final long itemId = recyclerView.getChildItemId(childView);
final int position = recyclerView.getChildAdapterPosition(childView);
mListener.onItemLongClick(recyclerView, childView, position, itemId);
}
}
});
}
@Override
public boolean onInterceptTouchEvent(final RecyclerView recyclerView, final MotionEvent event) {
final View childView = recyclerView.findChildViewUnder(event.getX(), event.getY());
if (childView != null && mListener != null && mGestureDetector.onTouchEvent(event)) {
final long itemId = recyclerView.getChildItemId(childView);
final int position = recyclerView.getChildAdapterPosition(childView);
mListener.onItemClick(recyclerView, childView, position, itemId);
}
return false;
}
@Override
public void onTouchEvent(final RecyclerView view, final MotionEvent motionEvent) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(final boolean disallowIntercept) {
}
}