Android之Adapter的封装与抽象(二)

来源:互联网 发布:路由器桥接后网络很慢 编辑:程序博客网 时间:2024/05/16 11:44

记得之前有写过一篇Adapter的封装与抽象,是关于ViewPager、ListView、GridView、Spinner的Adapter,

这里新增一个RecyclerView的Adapter。

其实RecyclerView.Adapter已经写的很好了,在这里再进行一下封装与抽象,来简化代码的耦合性。

与之前Adapter的封装大致风格一致,代码如下:

/** * @author Jenly * @param <T,H> T:实体对象,H:ViewHolder */public abstract class HolderRecyclerAdapter<T,H extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<H>{    private Context context;    private List<T> listData;    private LayoutInflater layoutInflater;    public HolderRecyclerAdapter(Context context,List<T> listData){        super();        this.context = context;        this.listData = listData;        this.layoutInflater = LayoutInflater.from(context);    }    @Override    public H onCreateViewHolder(ViewGroup parent, int viewType) {        View itemView = buildConvertView(layoutInflater,viewType);        return buildHolder(itemView,viewType);    }    @Override    public void onBindViewHolder(H holder, int position) {        bindViewDatas(holder,listData.get(position),position);    }    @Override    public int getItemCount() {        return listData==null ? 0:listData.size();    }    public View inflate(int layoutId){        return layoutInflater.inflate(layoutId, null);    }    public List<T> getListData() {        return listData;    }    public void setListData(List<T> listData) {        this.listData = listData;    }    /**     * 建立convertView     * @param layoutInflater     * @param viewType     * @return     */    public abstract View buildConvertView(LayoutInflater layoutInflater,int viewType);    /**     * 建立视图Holder     * @param convertView     * @param viewType     * @return     */    public abstract H buildHolder(View convertView,int viewType);    /**     * 绑定数据     * @param holder     * @param t     * @param position     */    public abstract void bindViewDatas(H holder,T t,int position);}


所有最新源码已总结上传至github 欢迎Star或Fork。

1 0
原创粉丝点击