RecyclerView的点击事件
2015-10-31 22:54
483 查看
用到RecyclerView的点击事件查的,记录一下,来源于 android v7兼容包RecyclerView的使用(四)——点击事件的不同方式处理
package com.mama.kanzhihudaily.ClickListener; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; /** * Created by dev on 10/31/15. */ public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener { private OnItemClickListener mListener; private GestureDetector mGestureDetector; public interface OnItemClickListener { void onItemClick(View view, int position); void onItemLongClick(View view, int position); } public RecyclerItemClickListener(Context context,final RecyclerView recyclerView, OnItemClickListener listener) { mListener = listener; mGestureDetector = new GestureDetector(context, new GestureDetector.OnGestureListener() { @Override public boolean onDown(MotionEvent motionEvent) { return false; } @Override public void onShowPress(MotionEvent motionEvent) { } @Override public boolean onSingleTapUp(MotionEvent motionEvent) { return true; } @Override public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) { return false; } @Override public void onLongPress(MotionEvent motionEvent) { View view = recyclerView.findChildViewUnder(motionEvent.getX(),motionEvent.getY()); if (view != null && mListener != null){ mListener.onItemLongClick(view,recyclerView.getChildAdapterPosition(view)); } } @Override public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) { return false; } }); } @Override public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) { View view = rv.findChildViewUnder(e.getX(),e.getY()); if (view != null && mListener != null && mGestureDetector.onTouchEvent(e)) { mListener.onItemClick(view,rv.getChildAdapterPosition(view)); return true; }else{ return false; } } @Override public void onTouchEvent(RecyclerView rv, MotionEvent e) { } @Override public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { } }
</pre><pre name="code" class="java">使用:
<pre name="code" class="java">recyclerView<span style="font-family: Arial, Helvetica, sans-serif;">.addOnItemTouchListener(new RecyclerItemClickListener(this,gridView,listener));</span>
<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="java"> RecyclerItemClickListener.OnItemClickListener listener = new RecyclerItemClickListener.OnItemClickListener() { @Override public void onItemClick(View view, int position) { Log.d("tony onItemClick",position+""); } @Override public void onItemLongClick(View view, int position) { Log.d("tony onItemLongClick",position+""); } };
相关文章推荐
- 细说Debug和Release区别
- HDOJ 1286 找新朋友(欧拉函数模板)
- 友盟分享实例( 一)——在activity中的应用
- javascript中讨论关联数组和对象的区别
- 执行计划中与分区相关的OP介绍
- PIC+DS18B20+LCD设计及程序过程中的问题
- Node.js 4.0的ES6新特性。
- 20135323符运锦--信息安全系统设计基础第八周期中总结
- LightOJ - 1071 Baker Vai(记忆化搜索)
- LeetCode Jump Game(贪心算法)
- 翻译了一半的文,明天补
- HDOJ 2824 The Euler function (欧拉函数打表)
- Java语言入门
- java 复习(一)整型变量使用
- Android中HorizontalScrollView的使用
- ubuntu jdk1.8
- 电商积分券 生成
- CSS之表格操作
- 视锥内物体莫名其妙被裁剪掉的问题
- crazyflie2.0_crazyflie-firmware_总体程序概括