更多分享:http://cherylgood.cn
version:2.8.5
今天我们来看下BaseRecyclerViewAdapterHelper是如何实现多布局的。
首先我们要实现多类型布局,我们的adapter不再是继承自BaseQuickAdapter类,而是继承自其的子类
BaseMultiItemQuickAdapter。而且数据源类型需要继承自MultiItemEntity,
MultiItemEntity是一个接口,代码很少:
package com.chad.library.adapter.base.entity;
/**
* https://github.com/CymChad/BaseRecyclerViewAdapterHelper
*/
public interface MultiItemEntity {
int getItemType();
}
其主要用意是我们的数据源继承MultiItemEntity,这样子,我们可以在数据源中动态的返回一个int类型的数值(代表某一类型的item),大家可以想一下,我们在渲染viewholder的时候,如果想实现多类型的viewholder,而viewholder的类型展示又跟所需绑定的数据息息相关,那么如果我们在数据源中提供一种确定viewholder类型的能力,理论上是不是就可以达到我们要的效果了?我们带着这样的一个假设继续往下看。
而这个BaseMultiItemQuickAdapter 是何许人也,是如何实现多类型布局的呢?我们来看下源码:
package com.chad.library.adapter.base;
import android.support.annotation.LayoutRes;
import android.util.SparseArray;
import android.view.ViewGroup;
import com.chad.library.adapter.base.entity.MultiItemEntity;
import java.util.List;
/**
* https://github.com/CymChad/BaseRecyclerViewAdapterHelper
*/