RecyclerView添加Item的点击事件
来源:互联网 发布:淘宝信用查询网站 编辑:程序博客网 时间:2024/06/05 00:29
RecyclerView没有像ListView那样的ListView.setOnItemClickListener(),但是提供了RecyclerView.addOnItemTouchListener来设置监听。
步骤
声明ItemClick监听
public interface OnItemClickListener { void onItemClick(View item, int position, long id);}public interface OnItemLongClickListener { void onItemLongClick(View item, int position, long id);}
实现GestureDetector(或者GestureDetectorCompat)所需的接口
这是一个手势操作处理的工具类
public SingleItemClickListener(Context context, final RecyclerView rv) { gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { @Override public boolean onSingleTapUp(MotionEvent e) { //单击操作,根据手指坐标获取对应的Item View childView = rv.findChildViewUnder(e.getX(), e.getY()); if (childView != null && onItemClickListener != null) { if (notifyAny || (childView.isEnabled() && childView.isClickable())) onItemClickListener.onItemClick(childView, rv.getChildLayoutPosition(childView), rv.getChildItemId(childView)); return true; } return false; } @Override public void onLongPress(MotionEvent e) { //长按操作,根据手指坐标获取对应的Item View childView = rv.findChildViewUnder(e.getX(), e.getY()); if (childView != null && onItemLongClickListener != null) { if (notifyAny || (childView.isEnabled() && childView.isClickable())) onItemLongClickListener.onItemLongClick(childView, rv.getChildLayoutPosition(childView), rv.getChildItemId(childView)); } } }); }
实现RecyclerView.OnItemTouchListener
public class SingleItemClickListener implements RecyclerView.OnItemTouchListener { private GestureDetector gestureDetector; ...省略部分代码 @Override public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) { return gestureDetector.onTouchEvent(e); } @Override public void onTouchEvent(RecyclerView rv, MotionEvent e) { } @Override public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { }}
给RecyclerView添加监听
RecyclerView.addOnItemTouchListener(new SingleItemClickListener(context, rv, listener));
完整代码
0 0
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 给RecyclerView的Item添加点击事件
- RecyclerView添加Item的点击事件
- 为RecyclerView添加item的点击事件
- 对RecyclerView的item添加点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 给recyclerview的item添加点击事件的 一种方法
- RecyclerView Item 的点击事件
- RecyclerView的item点击事件
- 使用vue+webpack的多页面架构
- 0和 null
- 史上最全的MySQL基础教程(收藏)
- linuxx初级学习之swap分区练习题
- Markdown插入公式~最佳方案
- RecyclerView添加Item的点击事件
- 【Android】退出多个Activity方法(三)
- 生产环境实战spark (10)分布式集群 5台设备 SPARK集群 HistoryServer WEBUI不能打开问题解决 File file:/tmp/spark-events does not
- Linux常用的一些内核参数(调优)
- 面试算法题:二叉树的平衡性检测
- BlueROV-4: DroneKit, MAVLink and Companion Computers
- Leetcode 371(Java)
- 徒手启动jenkins-体会docker好处
- 一种跨域技术:JSONP