Android RecyclerView给Item添加点击事件
来源:互联网 发布:淘宝小卖家流量 编辑:程序博客网 时间:2024/06/05 00:27
方法一、直接在Adapter中的onBindViewHolder()方法中实现点击事件
@Override public void onBindViewHolder(MyViewHolder viewHolder, final int postion) { viewHolder.textView.setText(mDatas.get(postion)); viewHolder.rootView.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // 点击事件 Toast.makeText(mContext, postion + "", 1000).show(); } }); }
方法二、
1、自定义一个接口。
public interface OnItemClickListener { public void onItemClick(View view, int postion);}
2、在自定义的ViewHolder中实现onClickListenr接口,先声明一个自定义接口的变量,在自定义的ViewHolder的构造函数中添加一个参数-自定义的这个接口,并设置itemview的点击事件,在点击事件中转移到自定义的接口上,传到外面的调用者。
/** * 自定义的ViewHolder继承自android.support.v7.widget.RecyclerView.ViewHolder * * @author raphets * */public class MyViewHolder extends ViewHolder implements OnClickListener { TextView textView; private OnItemClickListener mListener;// 声明自定义的接口 // 构造函数中添加自定义的接口的参数 public MyViewHolder(View itemView, OnItemClickListener listener) { super(itemView); mListener = listener; // 为ItemView添加点击事件 itemView.setOnClickListener(this); textView = (TextView) itemView.findViewById(R.id.textView); } @Override public void onClick(View v) { // getpostion()为Viewholder自带的一个方法,用来获取RecyclerView当前的位置,将此作为参数,传出去 mListener.onItemClick(v, getPosition()); }}
3、在自定义的Adapter中定义一个方法public void setOnItemClickListener(OnItemClickListener listener) {this.mClickListener = listener;}
并暴露给外面的调用者
MyRecylerViewAdapter
public class MyRecylerViewAdapter extends Adapter<MyViewHolder> { private Context mContext; private List<String> mDatas; private OnItemClickListener mClickListener; public MyRecylerViewAdapter(Context context, List<String> datas) { this.mContext = context; this.mDatas = datas; } @Override public int getItemCount() { return mDatas.size(); } @Override public void onBindViewHolder(MyViewHolder arg0, int arg1) { final int pos = arg1; arg0.textView.setText(mDatas.get(arg1)); } @Override public MyViewHolder onCreateViewHolder(ViewGroup arg0, int arg1) { View view = LayoutInflater.from(mContext).inflate(R.layout.item, arg0, false); MyViewHolder holder = new MyViewHolder(view,mClickListener); return holder; } public void setOnItemClickListener(OnItemClickListener listener) { this.mClickListener = listener; }}
4、在MainActivity中使用
adapter.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(View view, int postion) { Toast.makeText(MainActivity.this, postion+"", 1000).show(); } });
方法三、修改RecyclerView源码,在里面实现点击事件,这里我就不说了。
可参考http://blog.csdn.net/jwzhangjie/article/details/36868515
阅读全文
0 0
- Android RecyclerView给Item添加点击事件
- Android RecyclerView使用(二) -给Item添加点击事件
- RecyclerView 给Item添加点击事件
- 给RecyclerView的Item添加点击事件
- 给RecyclerView的item添加点击监听事件
- 给recyclerview的item添加点击事件的 一种方法
- 给RecyclerView的item添加点击监听事件
- Android RecyclerView Item点击事件
- Android 为RecyclerView中的item添加点击事件
- Android中RecyclerView添加item的点击事件
- Android 技术之为RecyclerView添加item的点击事件
- Android中为RecyclerView添加item的点击事件
- RecyclerView + CardView 添加Item点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 大咖 | 香港中文大学汤晓鸥教授:人工智能让天下没有难吹的牛!
- <贪心>ZJOI 2008 泡泡堂
- 我发现我的数据被操纵了……
- 一些资料网站
- mybatis 动态sql 多表分组查询
- Android RecyclerView给Item添加点击事件
- h5 路由跳转与锚点
- RxJava操作符之创建操作符(三)
- CODE[VS] 3729 飞扬的小鸟 背包
- 轮播
- 解决docker容器中文乱码,修改docker容器编码格式
- Java回顾之ORM框架
- JQ 中get和post两种发送请求的方法
- 十月 Android 版本分布图公布:Android Oreo 以 0.2% 现身