import android.support.v4.view.GestureDetectorCompat;
import android.support.v7.widget.RecyclerView;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
/**
* <pre>
* 名称:RecyclerItemClickListener
* 作用:
* 描述:
* 作者:pczhu
* 创建时间: 2017/6/9 下午2:26
* 版本:V1.0
* 修改历史:
* </pre>
*/
public class RecyclerItemClickListener extends RecyclerView.SimpleOnItemTouchListener {
private OnItemClickListener clickListener;
private GestureDetectorCompat gestureDetector; //v4 兼容包中
public interface OnItemClickListener {
/**
* 点击时回调
*
* @param view 点击的View
* @param position 点击的位置
*/
void onItemClick(View view, int position);
/**
* 长点击时回调
*
* @param view 点击的View
* @param position 点击的位置
*/
void onItemLongClick(View view, int position);
}
public RecyclerItemClickListener(final RecyclerView recyclerView, OnItemClickListener listener) {
this.clickListener = listener;
gestureDetector = new GestureDetectorCompat(recyclerView.getContext(),
new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent e) {
//找到点击位置对应的recyclerViewItem布局
View childView = recyclerView.findChildViewUnder(e.getX(), e.getY());
if (childView != null && clickListener != null ) {
//回调item对象以及在recyclerview中的位置
clickListener.onItemClick(childView, recyclerView.getChildAdapterPosition(childView));
return true;
}
return super.onSingleTapUp(e);
}
@Override
public void onLongPress(MotionEvent e) {
//找到点击位置对应的recyclerViewItem布局
View childView = recyclerView.findChildViewUnder(e.getX(), e.getY());
if (childView != null && clickListener != null) {
//回调item对象以及在recyclerview中的位置
clickListener.onItemLongClick(childView,
recyclerView.getChildAdapterPosition(childView));
}
}
});
}
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
//拦截相关事件交给gestureDetector对象处理。
if(gestureDetector.onTouchEvent(e)){
return true;
}
return false;
}
}
RecyclerView点击事件
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 前面两期学习了RecyclerView的简单使用,并为其item添加了分割线。在实际运用中,无论是List还是Gr...
- Android新引入的RecyclerView用来代替ListView,但是RecyclerView处理点击和长按...
- 本文是转存自 陈育的揭开RecyclerView的神秘面纱(二):处理RecyclerView的点击事件,附传送门...