Last active
January 27, 2016 07:22
-
-
Save yeojoy/5972f83e334bd9efc928 to your computer and use it in GitHub Desktop.
RecyclerItemClickListener. 민철형이 어디선가 보고 덧붙인 건데 일단 나중을 위해
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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