参考
BaseListAdapter
public abstract class BaseListAdapter<T> extends BaseAdapter {
/**
* 泛型对象列表
*/
private List<T> data;
/**
* 上下文
*/
private Context context;
/**
* 布局解析器
*/
private LayoutInflater inflater;
/**
* 初始化
*
* @param context 上下文
*/
public BaseListAdapter(Context context) {
data = new ArrayList<>();
this.context = context;
inflater = ((Activity) context).getLayoutInflater();
}
/**
* 将布局通过布局解析器转换成view
*
* @param layoutId 布局id
* @return 解析之后的布局
*/
public View layoutInflate(int layoutId) {
return inflater.inflate(layoutId, null);
}
/**
* 获取上下文对象
*
* @return 上下文对象
*/
public Context getContext() {
return context;
}
/**
* 设置数据
* @param list 数据
*/
public void setData(List<T> list) {
if (null != list) {
data = list;
} else {
data = new ArrayList<>();
}
notifyDataSetChanged();
}
/**
* 添加集合数据
* @param list 数据
*/
public void addData(List<T> list){
if (null!=list){
getData().addAll(list);
notifyDataSetChanged();
}
}
/**
* 添加对象数据
* @param data 数据
*/
public void addData(T data){
if (null!=data){
getData().add(data);
notifyDataSetChanged();
}
}
/**
* 移除数据
* @param index 下标
*/
public void removeData(int index){
if (getCount()>index){
getData().remove(index);
notifyDataSetChanged();
}
}
/**
* 清除数据
*/
public void clearData(){
getData().clear();
notifyDataSetChanged();
}
/**
* 修改数据
* @param data 数据
* @param index 下标
*/
public void replaceData(T data,int index){
if (getCount() > index) {
getData().remove(index);
getData().add(index, data);
notifyDataSetChanged();
}
}
/**
* 获取数据
* @return 数据
*/
public List<T> getData(){
return data;
}
@Override
public int getCount() {
return data.size();
}
@Override
public T getItem(int position) {
return data.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
}
BaseViewHolder
public abstract class BaseViewHolder<T> {
public BaseViewHolder(View view){
ButterKnife.bind(this,view);
}
/**
* 处理数据
* @param t 泛型数据
* @param context 上下文
* @param position 下标
*/
public abstract void config(T t, Context context, int position);
}