RecyclerView的基本用法 (二)
来源:互联网 发布:c .net数据库编程 编辑:程序博客网 时间:2024/05/23 21:33
3 点击事件
ListView的Item项的点击事件项目中一般会用到两个,一个是OnClickListener,另一个是OnLongClickListener。
由于RView已经不支持这两个事件的回调,因此,我们需要从其他途径来监听单击和长按,这时就需要用到手势监听。首先我们需要写下面这个类:
private class RecyclerViewDemoOnGestureListener extends GestureDetector.SimpleOnGestureListener { @Override public boolean onSingleTapConfirmed(MotionEvent e) { View view = recyclerView.findChildViewUnder(e.getX(), e.getY()); //获取点击项的view int idx = recyclerView.getChildPosition(view);//获取点击项view在adapter的索引位置 Log.e("onSingleTapConfirmed", "getChildPosition=" + idx); return super.onSingleTapConfirmed(e); } public void onLongPress(MotionEvent e) { View view = recyclerView.findChildViewUnder(e.getX(), e.getY());//获取点击项的view int idx = recyclerView.getChildPosition(view);//获取点击项view在adapter的索引位置 Log.e("onLongPress", "getChildPosition=" + idx); super.onLongPress(e); } }
可以看到里面有两个回调方法,顾名思义,一个是单击,一个是长按,在里面我们可以通过RView的findChildViewUnder方法获取点击的对象视图,然后通过这个视图和RView的getChildPosition来获取该视图在整个列表里的位置,这个位置与adapter里的位置是对应的,由此,便可以通过这两个对象完成点击事件的其余操作。
但手势必须要通过View的OnTouchListener才能监听得到,毕竟手势这个类是用来帮助识别各种手势的,所以还需要给RView添加OnItemTouchListener事件。
recyclerView.addOnItemTouchListener(this);
那么在其回调中我们需要做得事情就是将事件分流到手势监听里去并让事件继续往下传递。
@Override public boolean onInterceptTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) { gestureDetector.onTouchEvent(motionEvent); return false; } @Override public void onTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) { }
最后,初始化手势监听必不可少:
gestureDetector = new GestureDetectorCompat(this, new RecyclerViewDemoOnGestureListener());
0 1
- RecyclerView的基本用法 (二)
- RecyclerView的基本用法
- RecyclerView的基本用法
- RecyclerView的基本用法
- RecyclerView的基本用法
- RecyclerView的基本用法
- RecyclerView的基本用法
- RecyclerView的基本用法
- RecyclerView的基本用法
- RecyclerView的基本用法
- RecyclerView的基本用法
- RecyclerView的基本用法
- RecyclerView的基本用法 (一)
- RecyclerView的基本用法 (三)
- RecyclerView的基本用法 (四)
- RecyclerView的基本用法 (五)
- RecyclerView的基本用法二--滚动时RecyclerView之外的布局联动
- recyclerview的基本用法(一)
- Java高级工程师面试题目汇集(关于Struts,Spring,Hibernate三大框架的面试)
- 构造模式实践
- CodeForces 510B Fox And Two Dots(图论-回路判定)
- IOS相关书签
- 宏定义
- RecyclerView的基本用法 (二)
- Spring BlazeDS Integration之spring security(4)---自定义rememberMeServices,找到自动登陆成功切入点
- 三十而立,从零开始学ios开发
- Vitamio 3.0 新手教程
- Source Insight 使用方法入门
- MTK6577---camera驱动分析
- Swift之键盘事件
- mysql 优化
- 全局块匹配法计算图像旋转以及实现程序