Android RecyclerView 数据绑定实例代码数据绑定实例代码
本文主要介绍Android RecyclerView 数据绑定的资料,这里详细说明如何实现 Android RecyclerView的数据绑
定,并附示例代码,有需要的小伙伴可以参考下
前言前言
在上一个项目里有很多很多很多很多的RecyclerView,然后我需要写很多很多很多很多的Adapter和Viewholder——多倒没问
题,但是里面有很多重复的代码这就不能忍了!每一个Adapter和ViewHolder其实做的事情非常的像:视图绑定,数据绑定,
点击事件分发。还有啥?既然它们做的事情都一样,为啥我们还要傻傻的继续写着重复的代码?
正文正文
BaseAdapter
通常我们要创建一个RecyclerView.Adapter是怎么做的?
1. 接收一个数据列表
2. 重写getItemCount()方法,确定Item的个数
3. 重写onCreateViewHolder()方法,绑定Layout,新建一个我们自己写的RecyclerView.ViewHolder
4. 重写onBindViewHolder()方法,进行数据和视图绑定
5. 由于RecyclerView没有写点击事件,把点击事件分发出去
基本上就是这个套路,或者再加一个refreshData()的方法——传新的数据进来然后notifyDataSetChanged()。基于这些点,我
写了一个BaseAdapter基类:
/**
* Adapter基类.
* 适用于只有单个Item的RecyclerView.
*
* Created by lypeer on 16-5-24.
*/
public abstract class BaseAdapter<V> extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
/**
* 装载了每个Item的Value的列表
*/
private List<V> mValueList;
/**
* 我写的一个接口,通过回调分发点击事件
*/
private OnItemClickListener<V> mOnItemClickListener;
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return createViewHolder(parent.getContext(), parent);
}
@Override
@SuppressWarnings("unchecked")//一定会是BaseViewHolder的子类,因为createViewHolder()的返回值
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
//BaseViewHolder是我抽象出来的RecyclerView.ViewHolder的基类,下面会有详细讲解
((BaseViewHolder) holder).setData(mValueList.get(position), position, mOnItemClickListener);
}
/**
* 设置每个Item的点击事件
* @param listener
*/
public void setOnClickListener(OnItemClickListener<V> listener) {
this.mOnItemClickListener = listener;
}
/**
* 刷新数据
* @param valueList 新的数据列表
*/
public void refreshData(List<V> valueList) {
this.mValueList = valueList;
notifyDataSetChanged();
}
@Override
public int getItemCount() {