Android RecycleView多Item实践

RecycleView

recycleView功能强大设置一下touchHelper可以支持侧滑删除,拖拽等。

类结构

RecycleView的Adapter必须要有一个ViewHolder与之对应今天我们所设计的就是尽量通用的一个Adapter。

ViewHolder的基类

public class BaseViewHolder extends ViewHolder{
    BaseViewHolder()
    findView()
}

Adapter的基类

public abstract class BaseAdapter <T,K extends BaseViewHolder> extends RecycleView.Adapter<K>{
    List<T> mData
    abstract createViewHolder()//创建holder
    abstract convert(K holder, T t, int position, boolean isScrolling)//数据绑定
    abstract difViewType()//获取类别

    K createViewHolder(View view){
        return (K)new BaseViewHolder(view)
    }       
}

MultiItemAdapter多Item的基类

public abstract class MultiItemAdapter <T, K extends BaseViewHoler> extends BaseAdapter<T,K>{
    SpareArray<String> layouts//每个item的布局
    SpareArray<Class> clazz;//每个item信息装配者
    SpareArray<Map<String,Assembling>> assembler;//装配者实例 

    abstract getViewType(T t)
    abstract getItemKey(T t)

    getLayout()
    addItem()
    @Override conver(){
        assembler.get(getViewType(mData.get(position)).get(getItemKey).convert();
    }
}

Assembling的基类

public abstract class Assembling {
    abstact convert()
}

MultiImplAdapter真正使用的Adapter

public class MultiImplAdapter extends MultiItemAdapter{
    MultiItemAdapter(){
        addItem(viewType, R.layout.id, FriendAssembing.class);
        addItem(ViewType, R.layout.id, ContactsAssembing.class);
        ...
    }
    @Override getViewType(T t)
    @Override getItemKey(T t)
}

真正装配者的类

public class FriendAssembing {
    @Override convert(){
        holder.findView().set()
    }
}
public class FriendAssembing {
    @Override convert(){
        holder.findView().set()
    }
}

总结

这是看了一天某SDK总结的伪代码,自己整理一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值