您的位置:首页
RecyclerView的2种监听方式
2017-08-10 13:35
120 查看
NO.1:在自己定义适配器的ViewHolder里面写监听事件
//RecyclerView适配器 public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context mContext; private LayoutInflater mLayoutInflater; private String[] mCityName; public RecyclerViewAdapter(Context mContext) { this.mContext = mContext; mLayoutInflater = LayoutInflater.from(mContext); mCityName = mContext.getResources().getStringArray(R.array.city_name); } //创建新ViewHolder,被LayoutManager所调用 @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new RecyclerViewViewHolder(mLayoutInflater.inflate(R.layout.item_text, parent, false)); } //将数据与界面进行绑定的操作 @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { ((RecyclerViewViewHolder) holder).mTextView.setText(mCityName[position]); } //获取数据的数量 @Override public int getItemCount() { return mCityName == null ? 0 : mCityName.length; } //自己定义的ViewHolder,持有每一个Item的的全部界面元素 public class RecyclerViewViewHolder extends RecyclerView.ViewHolder { TextView mTextView; public RecyclerViewViewHolder(View itemView) { super(itemView); mTextView = (TextView) itemView.findViewById(R.id.tv_city); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ToastUtil.show(mContext, getPosition() + ""); } }); } } }
NO.2:封装个监听类
public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener { private OnItemClickListener mListener; public interface OnItemClickListener { public void onItemClick(View view, int position); } GestureDetector mGestureDetector; public RecyclerItemClickListener(Context context, OnItemClickListener listener) { mListener = listener; mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { @Override public boolean onSingleTapUp(MotionEvent e) { return true; } }); } @Override public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) { View childView = view.findChildViewUnder(e.getX(), e.getY()); if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) { mListener.onItemClick(childView, view.getChildPosition(childView)); return true; } return false; } @Override public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) { } }
用法:
mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view); mRecyclerView.addOnItemTouchListener(new RecyclerItemClickListener(this, new RecyclerItemClickListener.OnItemClickListener() { @Override public void onItemClick(View view, int position) { ToastUtil.show(OneActivity.this, position + ""); } }));
相关文章推荐
- RecyclerView的2种监听方式
- RecyclerView 的监听方式
- RecyclerView监听事件
- RecyclerView 横向列表 及 adapter 打造 item监听 改变元素属性
- RecyclerView的Item设置点击监听事件
- 为 RecyclerView 增加监听以及数据混乱的小坑
- Android——滑动监听RecyclerView线性流+左右划删除+上下移动
- Android RecyclerView滑动监听,判断是否滑动到了最后一个item
- Fragment切换方式与Recyclerview滚动影响
- RecyclerView跳转到指定位置的三种方式
- RecyclerView的item监听
- RecyclerView 滚动到底部监听
- RecyclerView添加Item的监听
- Android 滑动监听RecyclerView线性流+左右划删除+上下移动
- Android RecyclerView的焦点错乱处理及监听右键及左键
- 在RecyclerView设置监听事件
- listview或recyclerView嵌套edittext出现复用问题的解决方式
- Android RecyclerView 真正的布局刷新的正确方式
- 针对RecyclerView的布局方式会出现异常
- RecyclerView三种显示方式的下拉刷新和上拉加载更多