RecyclerView添加点击事件

来源:互联网 发布:华科 煤燃烧 知乎 编辑:程序博客网 时间:2024/05/22 12:01

转载:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1118/2004.html


添加点击事件

上一节中我们讲了如何使用RecyclerView的Adpater,其实我们会发现,Adapter是添加点击事件一个很好的地方,里面是构造布局等View的主要场所,也是数据和布局进行绑定的地方。首先我们在Adapter中创建一个实现点击接口,其中view是点击的Item,data是我们的数据,因为我们想知道我点击的区域部分的数据是什么,以便我下一步进行操作:

[java] view plain copy
  1. public static interface OnRecyclerViewItemClickListener {  
  2.     void onItemClick(View view , DataModel data);  
  3. }  



定义完接口,添加接口和设置Adapter接口的方法:

[java] view plain copy
  1. private OnRecyclerViewItemClickListener mOnItemClickListener = null;  
  2.     public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) {  
  3.     this.mOnItemClickListener = listener;  
  4. }  


那么这个接口用在什么地方呢?如下代码所示,我们为Adapter实现OnClickListener方法:

[java] view plain copy
  1. public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> implements View.OnClickListener{  
  2.     @Override  
  3.     public ViewHolder onCreateViewHolder(ViewGroup viewGroup, final int i) {  
  4.         View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, viewGroup, false);  
  5.         ViewHolder vh = new ViewHolder(view);  
  6.         //将创建的View注册点击事件  
  7.         view.setOnClickListener(this);  
  8.         return vh;  
  9.     }  
  10.     @Override  
  11.     public void onBindViewHolder(ViewHolder viewHolder, final int i) {  
  12.         viewHolder.mTextView.setText(datas.get(i).title);  
  13.         //将数据保存在itemView的Tag中,以便点击时进行获取  
  14.         viewHolder.itemView.setTag(datas.get(i));  
  15.     }  
  16.     ...  
  17.     @Override  
  18.     public void onClick(View v) {  
  19.         if (mOnItemClickListener != null) {  
  20.             //注意这里使用getTag方法获取数据  
  21.             mOnItemClickListener.onItemClick(v,(DataModel)v.getTag());  
  22.         }  
  23.     }  
  24.     ...  
  25. }  


做完这些事情,我们就可以在Activity或其他地方为RecyclerView添加项目点击事件了,如在MainActivity中:

[java] view plain copy
  1. mAdapter = new MyAdapter(getDummyDatas());  
  2. mRecyclerView.setAdapter(mAdapter);  
  3. mAdapter.setOnItemClickListener(new MyAdapter.OnRecyclerViewItemClickListener() {  
  4.     @Override  
  5.     public void onItemClick(View view, DataModel data) {  
  6.         //DO your fucking bussiness here!  
  7.     }  
  8. });  


完成了以上代码就可以为RecyclerView添加项目点击事件了,下面我们来看看RecyclerView如何添加和删除数据并在界面上显示。

原创粉丝点击