博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RecyclerView的2种监听方式
阅读量:4566 次
发布时间:2019-06-08

本文共 3222 字,大约阅读时间需要 10 分钟。

NO.1:在自己定义适配器的ViewHolder里面写监听事件

//RecyclerView适配器    public class RecyclerViewAdapter extends RecyclerView.Adapter
{
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 + "");         }    }));

转载于:https://www.cnblogs.com/llguanli/p/7338816.html

你可能感兴趣的文章
Flask 模板语法
查看>>
ZOJ FatMouse' Trade 贪心
查看>>
音乐播放器
查看>>
SQL COOKBOOK (Ch.1-10)
查看>>
创建数组
查看>>
dict使用
查看>>
[转] 移动平台Html5的viewport使用经验
查看>>
ASP.NET MVC的帮助类HtmlHelper和UrlHelper
查看>>
《Python数据科学手册》第五章机器学习的笔记
查看>>
ubuntu16.04 配置爬虫环境
查看>>
Centos7,PHP7安装swoole
查看>>
02_ListActive中响应事件 并LogCat输出
查看>>
doubleclick adx note
查看>>
Celery框架
查看>>
[c#]asp.net开发微信公众平台(4)关注事件、用户记录、回复文本消息
查看>>
[转载,感觉写的非常详细]DUBBO配置方式详解
查看>>
linux Valgrind使用说明-内存泄漏
查看>>
Android在Eclipse上的环境配置
查看>>
面向对象(五)
查看>>
android平台下使用点九PNG技术
查看>>