asistencia/attendance-ubb/src/main/java/cl/cromer/ubb/attendance/RecyclerClickListener.java

51 lines
1.9 KiB
Java

package cl.cromer.ubb.attendance;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
public class RecyclerClickListener implements RecyclerView.OnItemTouchListener {
private OnClickListener onClickListener;
public interface OnClickListener {
void onClick(View view, int position);
void onLongClick(View view, int position);
}
private GestureDetector gestureDetector;
public RecyclerClickListener(Context context, final RecyclerView recyclerView, final OnClickListener listener) {
onClickListener = listener;
gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override public boolean onSingleTapUp(MotionEvent motionEvent) {
return true;
}
@Override
public void onLongPress(MotionEvent motionEvent) {
View childView = recyclerView.findChildViewUnder(motionEvent.getX(), motionEvent.getY());
if(childView != null && listener != null) {
listener.onLongClick(childView, recyclerView.getChildAdapterPosition(childView));
}
}
});
}
@Override public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
View childView = view.findChildViewUnder(e.getX(), e.getY());
if (childView != null && onClickListener != null && gestureDetector.onTouchEvent(e)) {
onClickListener.onClick(childView, view.getChildAdapterPosition(childView));
return true;
}
return false;
}
@Override
public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) {}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {}
}