一.前言
MultiType是一个实现复杂布局的框架,可以轻松实现以下效果:
二.踩过的坑
1.在使用MultiTypeAdapter mAdapter注册子item的时候,同一个xxx.class只能被注册一次,比如下面DataBean.class被注册了两次,但是只能显示其中一个的数据。如果DataBean.class有了多个list字段数据,建议在使用MultiType的时候单独为每个DataBean.class里的list单独建一个类。如下面的b)所示
//1.注册类型和View的对应关系
mAdapter = new MultiTypeAdapter();
//列表标题头
mAdapter.register(CategoryBean.class, new CategoryViewBinder());
//Feature
mAdapter.register(DataBean.class, new FeatureViewBinder(mContext));
//Special
mAdapter.register(DataBean.class, new SpecialViewBinder(mContext));
a).DataBean.class的部分字段
private List<BannersBean> banners;
private List<CategoriesBean> categories;
private List<BooksBean> books;
private List<SpecialsBean> specials;
public DataBean(List<BannersBean> banners, List<CategoriesBean> categories, List<BooksBean> books, List<SpecialsBean> specials) {
this.banners = banners;
this.categories = categories;
this.books = books;
this.specials = specials;
}
b).单独为books
public class BooksListBean extends BaseEntity.BaseBean {
private List<BooksBean> books;
public BooksListBean(List<BooksBean> books) {
this.books = books;
}
public List<BooksBean> getBooks() {
return books;
}
public void setBooks(List<BooksBean> books) {
this.books = books;
}
@Override
public String toString() {
return "BooksListBean{" +
"books=" + books +
'}';
}
}