RecyclerView.Adapter的封装

改造了鸿洋大神的baseAdapter,
加了两个自己封装的Adapter,
借鉴了网上的Listview的Adapter的封装,
攒了攒,自己感觉挺好使;

拿出来让大家指导指导

github 地址: https://github.com/Yuanarcheannovice/XBaseAdapter


这里看一个 Adapter的例子吧

/**
 * Created by xz on 2017/7/27 0027.
 * 增加了纯净Adapter,的数据操作
 * 

* 因为有些时候可是使用的map集合,所以改用继承来写数据操作,不合并到 RvPureAdapte中 */ public abstract class XRvPureDataAdapter extends XRvPureAdapter { protected List mDatas;//一般数据 public List getDatas() { if (mDatas == null) mDatas = new ArrayList<>(); return mDatas; } /** * 数据替换 ,带刷新 * * @param datas 数据 * @param isRefresh 是否刷新 */ public void setDatas(List datas, boolean isRefresh) { if (datas == null) datas = new ArrayList<>(); if (mDatas == null) { mDatas = new ArrayList<>(); } else { mDatas.clear(); } this.mDatas.addAll(datas); if (isRefresh) notifyDataSetChanged(); } /** * 一般使用 不带刷新 */ public void setDatas(List datas) { if (datas == null) datas = new ArrayList<>(); if (mDatas == null) { mDatas = new ArrayList<>(); } else { mDatas.clear(); } this.mDatas.addAll(datas); } /** * 数据集合增加数据 带刷新 * * @param data 数据 * @param isRefresh 是否刷新 */ public void addDatas(List data, boolean isRefresh) { if (this.mDatas == null) { this.mDatas = new ArrayList<>(); this.mDatas.addAll(data); if (isRefresh) notifyDataSetChanged(); } else { this.mDatas.addAll(data); //因为Header也是占有刷新的 下标,所以需要加上 notifyItemRangeInserted(mDatas.size() - data.size(), data.size()); } } /** * 移除data * * @param data 对象 * @return 是否移除成功 */ public boolean removeData(T data) { return this.mDatas != null && this.mDatas.remove(data); } /** * 移除所有数据 */ public void removeDataAll() { if (mDatas != null) mDatas.clear(); notifyDataSetChanged(); } /** * 移除data * * @param index 下标 * @return */ public boolean removeData(int index) { if (mDatas != null && index >= 0) { if (index < mDatas.size()) { mDatas.remove(index); return true; } else { return false; } } else { return false; } } /** * 得到单个item * * @param position item的下标 * @return 集合中的某个对象 */ public T getItem(int position) { if (mDatas != null && !mDatas.isEmpty()) { return mDatas.get(position); } return null; } @Override public int getItemCount() { if (mDatas != null) return mDatas.size(); else return 0; } }


使用:

public class MapAdapter extends XRvPureDataAdapter {

    @Override
    public int getItemLayout(int viewType) {
        return R.layout.item_map;
    }

    @Override
    public void onBindViewHolder(XRvViewHolder holder, int position) {
        TextView bigTv=holder.getView(R.id.im_bigtv);
        TextView minTv=holder.getView(R.id.im_migtv);
        
        PoiInfo poiInfo=mDatas.get(position);
        bigTv.setText(poiInfo.name);
        minTv.setText(poiInfo.address);
        if(mIndexTag==position){
            bigTv.setTextColor(ContextCompat.getColor(WeplayApp.context,R.color.app_main_color));
            minTv.setTextColor(ContextCompat.getColor(WeplayApp.context,R.color.app_main_color));
        }else{
            bigTv.setTextColor(ContextCompat.getColor(WeplayApp.context,R.color.app_txt_black));
            minTv.setTextColor(ContextCompat.getColor(WeplayApp.context,R.color.app_txt_gray_light));
        }
    }
}

你可能感兴趣的:(RecyclerView.Adapter的封装)