赞
踩
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);
- }
- }

但手势必须要通过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());
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。