RecyclerView高效添加单击、长按事件最佳方案
来源:互联网 发布:h3c mac认证 编辑:程序博客网 时间:2024/04/29 00:11
转自:http://blog.csdn.net/liaoinstan/article/details/51200600
android开发游记:RecyclerView无法添加onItemClickListener最佳的高效解决方案
前言
之前最多的可能是在adapter中自己写一个itemClickListener来实现!下面使用RecyclerView中的addOnItemTouchListener()来实现!
实现
import android.support.v4.view.GestureDetectorCompat;import android.support.v7.widget.RecyclerView;import android.view.GestureDetector;import android.view.MotionEvent;import android.view.View;public abstract class OnRecyclerItemClickListener implements RecyclerView.OnItemTouchListener { private GestureDetectorCompat mGestureDetector; private RecyclerView recyclerView; public OnRecyclerItemClickListener(RecyclerView recyclerView) { this.recyclerView = recyclerView; mGestureDetector = new GestureDetectorCompat(recyclerView.getContext(), new ItemTouchHelperGestureListener()); } public abstract void onItemClick(RecyclerView.ViewHolder viewHolder); public abstract void onItemLongClick(RecyclerView.ViewHolder viewHolder); @Override public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) { mGestureDetector.onTouchEvent(e); return false; } @Override public void onTouchEvent(RecyclerView rv, MotionEvent e) { mGestureDetector.onTouchEvent(e); } @Override public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { } private class ItemTouchHelperGestureListener extends GestureDetector.SimpleOnGestureListener { @Override public boolean onSingleTapUp(MotionEvent e) { View child = recyclerView.findChildViewUnder(e.getX(), e.getY()); if (child != null) { RecyclerView.ViewHolder viewHolder = recyclerView.getChildViewHolder(child); onItemClick(viewHolder); } return true; } @Override public void onLongPress(MotionEvent e) { View child = recyclerView.findChildViewUnder(e.getX(), e.getY()); if (child != null) { RecyclerView.ViewHolder viewHolder = recyclerView.getChildViewHolder(child); onItemLongClick(viewHolder); } } }}
然后使用:
recyclerView.addOnItemTouchListener(new OnRecyclerItemClickListener(recyclerView) { @Override public void onItemClick(RecyclerView.ViewHolder viewHolder) { ... } @Override public void onItemLongClick(RecyclerView.ViewHolder viewHolder) { ... }});
阅读全文
1 0
- RecyclerView高效添加单击、长按事件最佳方案
- Android初识RecyclerView 添加分割线、单击事件、长按事件
- Recyclerview添加点击事件和长按事件
- 为RecyclerView添加点击事件、长按事件
- 为RecyclerView添加优雅的点击事件、长按事件
- RecyclerView的Item单击事件&长按事件(自定义接口回调)
- RecyclerView长按事件
- RecyclerView添加onItemClickListener最佳的高效解决方案
- RecyclerView添加点击和长按事件的简单实现
- 给RecyclerView通用Adapter添加Item单击事件
- View单击双击长按事件
- RecyclerView点击事件与长按事件
- RecyclerView点击事件与长按事件
- RecyclerView点击事件与长按事件
- RecyclerView点击事件与长按事件,并添加点击效果
- Android中Recyclerview使用3----添加条目得到点击事件和长按事件
- 为RecyclerView的Item添加点击及长按事件的三种方法
- android recyclerview的使用,添加分割线,点击,长按事件
- SQLServer 镜像配置 填坑
- php之socket入门教程
- 欢迎使用CSDN-markdown编辑器
- lintcode括号匹配
- HTML常用技巧记录
- RecyclerView高效添加单击、长按事件最佳方案
- 三色排序
- Lambda
- JAVA并发的学习笔记
- java内存分配
- Spring MVC (6) spring MVC 写一个增删改查的小项目
- 精灵云Ghostcloud获2000万A轮融资,将全面拓展国内容器云服务市场
- Glide框架学习总结
- 九度OJ 1107 搬水果