MultiTypeAdapter是一款簡(jiǎn)單好用支持多種類(lèi)型的RecyclerView的適配器,使用簡(jiǎn)單,功能強(qiáng)大。
MultiTypeAdapter整個(gè)類(lèi)庫(kù)只有9個(gè)class文件,支持bean和type之間一對(duì)多的關(guān)系綁定,即一個(gè)數(shù)據(jù)bean對(duì)應(yīng)著一個(gè)布局類(lèi)型。
基本用法
// project build.gradle
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter/' }
google()
jcenter()
}
// module build.gradle
dependencies {
implementation 'me.drakeet.multitype:multitype:3.3.1'
}
代碼中的使用
MultiTypeAdapter mAdapter = new MultiTypeAdapter();
//獲取數(shù)據(jù)
HashMap<Class, BaseViewBinder> registerMap = giftScene.registerMessageBinder();
//進(jìn)行綁定
if (registerMap.size() > 0) {
for (Map.Entry<Class, BaseViewBinder> entry : registerMap.entrySet()) {
mAdapter.register(entry.getKey(), entry.getValue());
}
}
mAdapter.setItems(listMsg);
MiguLinearLayoutManager layoutManager= new MiguLinearLayoutManager(context,
LinearLayoutManager.VERTICAL, false);
mRecyclerView.setLayoutManager(layoutManager);
if (refreshHeader != null && refreshHeader instanceof IRefreshHeader) {
mRecyclerView.setRefreshHeaderView(refreshHeader);
}
//設(shè)置adapter
mRecyclerView.setAdapter(mAdapter);
類(lèi)與布局綁定
//class GiftScene
@Override public HashMap <Class, BaseViewBinder> registerMessageBinder() {
HashMap <Class, BaseViewBinder> registerMap = new HashMap <>();
registerMap.put(GiftListBean.class, new BaseViewBinder(GiftListViewItem.class));
return registerMap;
}
public class BaseViewBinder<V, T> extends ItemViewBinder<V, T, Object> {
public BaseViewBinder() {
}
public BaseViewBinder(Class vuClass) {
this.vuClass = vuClass;
}
public BaseViewBinder(CallBack <Object> callBack) {
itemCallBack = callBack;
}
public BaseViewBinder(Class vuClass, CallBack <Object> callBack) {
this.vuClass = vuClass;
itemCallBack = callBack;
}
@Override
protected void beforeInit() {
super.beforeInit();
}
}
public class GiftListItem extends ViewUtils{
@Override
public int getLayoutId() {
return R.layout.item_view;
}
@Override
public void bindView() {
super.bindView();
//初始化布局
}
@Override
public void bindData() {
super.bindView();
//初始化布局
}
}
快來(lái)試一試吧~~