关于不同类型多布局的展示BaseMultiItemQuickAdapter详解
二 新篇章
对于Android 初学者来说,说到数据展示,相信大家对一定会想到ListView 或者 RecyclerView,但是简单的数据展示这个确实没毛病。当出现复杂数据需要多布局展示的时候,这个时候相信大部分人想到的都是各种嵌套 , 最常见的 是ScrollView , ListView 以及 RecyclerView 三者之间的 嵌套;当你嵌套的时候问题来了,最大的问题不外乎滑动事件冲突,以及滑动卡顿问题 ,这个时候要么去自定义 要么去重写方法,对于初学者来说是一件很头疼的事情,其实当你看Google官方文档的时候你会发现 当初在设计的时候并没有要开发者去嵌套使用,接下来我给大家介绍一种三方的框架 BaseMultiItemQuickAdapter
,希望能够帮助到Android 初学者!这是一个简单易懂使用的框架
如果需要定义多个不同类型的布局,需要知道以下几点:
重写getItemViewType()方法,根据需求规则给出不同的type值。
在onCreateViewHolder()方法里面根据不同的type来创建不同的ViewHolder
在onBindViewHolder()里面根据不同holder的类型来赋予相对于的数据
如果有额外布局(如:头部尾部)需要修改getItemCount()方法的返回数量
多个不同的布局的实现
1.重写了getDefItemViewType()方法,其实也就是父类的getItemViewType()里面的方法,
2.type搞定了,接下来就是调用onCreateDefViewHolder()了,根据上面的type来创建不同的ViewHolder,
3.然后再接下来调用onBindDefViewHolder(),根据上面创建的ViewHolder的类型不同来进行相应的赋值。
添加头部和尾部
下面直接上代码:
MultipleItemQuickAdapter 类:
public class MultipleItemQuickAdapter extends BaseMultiItemQuickAdapter<MultipleItem, BaseViewHolder> implements View.OnClickListener {
private String SUGGEST_DATE = "SUGGEST_DATE";
private String SUGGEST_GOODS_DATE = "SUGGEST_GOODS_DATE";
private String TIME_DATE = "TIME_DATE";
private Context mContext;
private HomeHeadResponse mHomeHeadResponse;
private int page = 1;
private NewsShopsItemAdapter itemClickAdapter;
public MultipleItemQuickAdapter(Context context, List data) {
super(data);
this.mContext = context;
addItemType(MultipleItem.ITEM_TYPE_1, R.layout.item_type_1);
addItemType(MultipleItem.ITEM_TYPE_2, R.layout.item_type_2);
addItemType(MultipleItem.ITEM_TYPE_3, R.layout.item_type_3);
addItemType(MultipleItem.ITEM_TYPE_4, R.layout.item_type_4);
addItemType(MultipleItem.ITEM_TYPE_5, R.layout.item_type_5);
addItemType(MultipleItem.ITEM_TYPE_6, R.layout.item_type_6);
}
@Override
protected void convert(BaseViewHolder helper, MultipleItem item) {
switch (helper.getItemViewType()) {
case MultipleItem.ITEM_TYPE_1:
i