Android现在越来越广泛的使用RecyclerView来实现更好的布局效果(比如瀑布流、卡片。。。)。但是RecyclerView的数据适配器RecyclerView.Adapter跟传统的BaseAdapter、ArrayAdapter之类的数据适配器有些不同,这也造成了在为子项添加View事件监听器时有些棘手,相信大家平时在使用当中也能感受得到。
为什么这么说呢?
1. 传统的的适配器中,我们一般都是在getView()方法中为相应的View添加各种监听器,对不同的View做适配处理。
View getView(int position, View convertView, ViewGroup parent);
而getView()传入了对添加事件监听器来说极其重要的两个参数,一个是在View集(通过DataSetObserver同数据集相关联)中的位置参数position, 另外则是需要适配的子View引用。因此我可以很方便的就直接添加上了事件监听器,比方说OnClickListener可以直接 convertView.setOnClickListener(View.OnclickListner), 然后在点击回调里面通过position来取到数据集当中相应的数据。
但是在RecyclerView却没有这么容易了,在同View适配密切相关的函数中:
public void onBindViewHolder(ViewHolder viewHolder, int position)
只有一个ViewHolder(用来持有RecyclerView子项里面的各种View引用)和 position, position参数有了,我们可以通过po