Skip to content

Instantly share code, notes, and snippets.

@yeojoy
Last active January 27, 2016 07:22
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 yeojoy/5972f83e334bd9efc928 to your computer and use it in GitHub Desktop.
Save yeojoy/5972f83e334bd9efc928 to your computer and use it in GitHub Desktop.
RecyclerItemClickListener. 민철형이 어디선가 보고 덧붙인 건데 일단 나중을 위해
package me.yeojoy
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
/**
* Created by 민철 on 10월 1일.
*/
public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
public interface OnItemClickListener {
void onItemClick(View view, int position);
void onItemLongClick(View view, int position);
void onDoubleTap(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 boolean onSingleTapConfirmed(MotionEvent e) {
View childView = recyclerView.findChildViewUnder(e.getX(), e.getY());
if (childView != null && mListener != null) {
mListener.onItemClick(childView, recyclerView.getChildAdapterPosition(childView));
}
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 onDoubleTap(MotionEvent e) {
View childView = recyclerView.findChildViewUnder(e.getX(), e.getY());
if (childView != null && mListener != null) {
mListener.onDoubleTap(childView, recyclerView.getChildAdapterPosition(childView));
}
return true;
}
});
}
@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));
// }
mGestureDetector.onTouchEvent(e);
return false;
}
@Override
public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment