Android RecyclerView使用(二) -给Item添加点击事件
来源:互联网 发布:淘宝美国章鱼哥的铺子 编辑:程序博客网 时间:2024/05/22 00:13
在上一篇博客Android RecyclerView使用(一)中介绍了一些基本用法,但是RecyclerView没有提供Item的点击事件,这里需要我们自己去实现。
方法一、直接在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 1
- Android RecyclerView使用(二) -给Item添加点击事件
- Android RecyclerView给Item添加点击事件
- RecyclerView使用(二)多种Item布局、添加点击事件
- RecyclerView 给Item添加点击事件
- 给RecyclerView的Item添加点击事件
- 给RecyclerView的item添加点击监听事件
- 给recyclerview的item添加点击事件的 一种方法
- 给RecyclerView的item添加点击监听事件
- 从头开始学 RecyclerView(二) 添加item点击事件
- Android中RecyclerView使用,RecyclerView-Item点击事件设置
- Android RecyclerView Item点击事件
- Android 为RecyclerView中的item添加点击事件
- Android中RecyclerView添加item的点击事件
- Android 技术之为RecyclerView添加item的点击事件
- Android中为RecyclerView添加item的点击事件
- 初识RecyclerView(二)——添加item的点击事件
- 为RecyclerView添加item的点击事件(个人备忘录)
- RecyclerView + CardView 添加Item点击事件
- C#几个快捷键
- Ubuntu上安装 Emacs 24的几种方法
- ps部分用法记录
- LeetCode 4, Median of Two Sorted Arrays
- c++第四次实验
- Android RecyclerView使用(二) -给Item添加点击事件
- python爬取煎蛋美眉
- 进程调度算法-总结参考
- 数组指针和指针数组的区别
- iOS动画(一):拍电影与CABasicAnimation
- 数据提取-Selenium专治各种顽固性客户端
- ActiveMQ持久化消息的三种方式
- shell 中获取当前工作路径和命令文件所在绝对路径
- angularjs 动态生成多个checkboxs,但只能选择一个