RecyclerView item内部点击事件、item点击事件冲突
来源:互联网 发布:加盟淘宝孕婴店 编辑:程序博客网 时间:2024/06/06 18:40
1.recyclerview item内部控件没有点击事件
在recyclerview item内部控件不存在点击事件的情况下。item设置点击事件可通过添加触摸事件
recyclerview.addOnItemTouchListener();//为item添加触摸事件监听OnItemTouchListener 的相应定义/**处理类*/ private class ItemTouchHelperGestureListener extends GestureDetector.SimpleOnGestureListener { public boolean onSingleTapUp(MotionEvent event){ View child = recyclerView.findChildViewUnder(event.getX(), event.getY()); if (child != null){ RecyclerView.ViewHolder viewHolder = recyclerView.getChildViewHolder(child); onItemClick(viewHolder); } return true; } public void onLongPress(MotionEvent event){ View child = recyclerView.findChildViewUnder(event.getX(), event.getY()); if (child != null){ RecyclerView.ViewHolder viewHolder = recyclerView.getChildViewHolder(child); onItemLongClick(viewHolder); } } }
/**通用recyclerView item点击事件实现*/public abstract MyItemClickListener implments RecylerView.OnItemTouchListener{ //view private final RecyclerView recyclerView; //手势识别类 private final GestureDetectorCompat mGestureDetector; public MyItemClickListener(RecyclerView recyclerView){ this.recyclerView = recyclerView; mGestureDetector = new GestureDetectorCompat(recyclerView.getContext(),new ItemTouchHelperGestureListener()); } @Override public void onTouchEvent(RecyclerView rv, MotionEvent e) { mGestureDetector.onTouchEvent(e); } @Override public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) { mGestureDetector.onTouchEvent(e); return false; } @Override public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { } //直接将上面的类写作内部类并调用下方的方法。 public abstract void onItemClick(RecyclerView.ViewHolder viewHolder); public abstract void onItemLongClick(RecyclerView.ViewHolder viewHolder);}此方法只适用于item 内部控件无监听事件。
2.item 内部控件点击事件
此种情况针对内部item有监听事件
适配器中通过实现点击事件、长按事件来实现item的点击、长按事件。//监听器 这里方便设置调用点击、长按事件直接写在一个监听类中public interface MyItemClickListener{ void onItemClick(); void onItemLongClick();}
//适配器MyItemClickListener listener=null;onCreateViewHolder() 中设置点击、长按事件。v.setOnClickListener(this);v.setOnLongClickListener(this);onBindViewHolder()方法中为view设置tag;holder.itemView.setTag(position);调用方法设置public void setOnItemListener(MyItemClickListener listener){ this.listener=listener;}@Overridepublic void onClick(View v) { if(listener!=null){ listener.onItemClick }}直接在adapter实例之后进行事件的调用。在相对应的地方try{}catch(Exception e){}
以上为实际编码中遇到的事件传递问题的解决。
阅读全文
0 0
- RecyclerView item内部点击事件、item点击事件冲突
- RecyclerView设置Item点击事件
- RecyclerView Item 的点击事件
- RecyclerView中item点击事件
- RecyclerView设置 item点击事件
- RecyclerView的item点击事件
- RecyclerView item 点击事件设置
- RecyclerView的item点击事件
- RecyclerView中的item点击事件
- RecyclerView的item点击事件
- RecyclerView的Item点击事件
- Android RecyclerView Item点击事件
- RecyclerView的item点击事件
- 实现RecyclerView的item点击事件的内部监听器
- item点击事件与checkBox点击冲突
- Android-RecyclerView-Item点击事件设置
- Android-RecyclerView-Item点击事件设置
- RecyclerView 给Item添加点击事件
- Unity3D中自带事件函数的执行顺序
- 线上抓娃娃定制服务流程
- Java中Random()函数
- 应用程序池提示:未指定错误,访问站点提示:Service Unavailable
- HBase盲点扫描:集群搭建及hbaseshell使用
- RecyclerView item内部点击事件、item点击事件冲突
- JavaFX控件——TableView
- Dubbo Hessian2序列化问题
- Android Application 多继承
- Oracle导出导入
- 购买二手房为了少纳税签下了“阴阳合同”,明年将坐牢!
- EasyDMA和PPI学习
- 本地仓库关联到远程仓库中
- Java实现内存可见性的两种方法比较:synchronized 和 Volatile以及涉及到锁的剖析