BaseRecycleViewAdapter的封装,基于多种bean数据源的呈现

本文记录了如何封装一个BaseRecycleViewAdapter,以实现RecyclerView中加载不同bean类型的数据源。通过 getItemViewType 方法区分数据类型,并创建相应的ViewHolder。示例代码展示了两种数据源的展示方式,数据来源于数据库不同表,采用MVP+Dagger2+RxJava+GreenDao3架构。
摘要由CSDN通过智能技术生成

写在前面:最近项目上需要,这是一点记录
一.需求:
recycleview中可以实现多种不同的bean,加载不同的数据源内容在同一个adapter上。(以下用两种举例)
二.思路
1.首先需要两种list data,呈现在一个adapter上时,需要根据位置来进行区别,RecyclerView.Adapter中的getItemViewType可以很好的区别多种数据类型
2.你有多少种bean,就需要多少种viewholder
三.以下是代码,提供注释

//我这里用两种数据源,多种可适当增加<T, K,...>泛型
public abstract class BaseRecycleViewAdapter<T, K> extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private static final String TAG = "zht";

    private static final int TYPE_FOLDER = 0;
    private static final int TYPE_PHOTO = 1;

    protected List<T> mData1;
    protected List<K> mData2;
    protected Context mContext;
    protected LayoutInflater mLayoutInflater;
    protected int mLayoutResId1;//这里是实现不同数据源的呈现的布局1
    protected int mLayoutResId2;//这里是实现不同数据源的呈现的布局2
    private OnRecycleViewItemClickListener onRecycleViewItemClickListener;
    private OnRecycleViewItemLongClickListener onRecycleViewItemLongClickListener;


    public BaseRecycleViewAdapter(Context context, List<T> data1, List<K> data2) {
        mLayoutResId1 = attachLayoutRes1();
        mLayoutResId2 = attachLayoutRes2();
        if (data1 == null || data2 == null) {
            mData1 = new ArrayList<>();
            mData2 = new ArrayList<>();
        } else {
            this.mData1 = data1;
            this.mData2 = data2;
        }
        this.mContext = context;
        this.mLayoutInflater = LayoutInflater.from(mContext);
    }

    //以下四个方法会在子类adapter中使用
    
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值