首先说明版本
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.4'
多布局
1.实体类继承 implements MultiItemEntity,然后实现 getItemType() 方法。
public class ArticleBean implements MultiItemEntity{
// 文章id
private long articleId;
// 文章标题
private String title;
// 文章内容
private String previewImage;
// 类型
private int itemType;
@Override
public int getItemType() {
return itemType;
}
public void setItemType(int itemType) {
this.itemType = itemType;
}
public long getArticleId() {
return articleId;
}
public void setArticleId(long articleId) {
this.articleId = articleId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getPreviewImage() {
return previewImage;
}
public void setPreviewImage(String previewImage) {
this.previewImage = previewImage;
}
}
2.适配器
public class MainArticleAdapter extends BaseMultiItemQuickAdapter<ArticleBean, BaseViewHolder> {
public MainArticleAdapter(@Nullable List<ArticleBean> data) {
super(data);
// 1、2、3 其实就是上面的 itemType,不同的 itemType 值返回不同的布局
// 这里写死了,一般开发过程中一般使用常量
addItemType(1, R.layout.item_normal_article);
addItemType(2,R.layout.item_images_article);
addItemType(3,R.layout.item_video_article);
}
@Override
protected void convert(@NotNull BaseViewHolder baseViewHolder, ArticleBean articleBean) {
// 然后这里,不同布局做不同操作
switch (baseViewHolder.getItemViewType()) {
case 1:
break;
case 2:
break;
case 3:
break;
}
}
}
3.使用
RecyclerView recyclerView = findViewById(R.id.recyclerView);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(linearLayoutManager);
List<ArticleBean> list = new ArrayList<>();
// 这里写死了,一般开发过程中一般使用常量
for(int i =0;i<10;i++){
ArticleBean articleBean = new ArticleBean();
if(i % 3 == 0){
articleBean.setItemType(3);
}else if(i %2 ==0){
articleBean.setItemType(2);
}else{
articleBean.setItemType(1);
}
list.add(articleBean);
}
MainArticleAdapter mainArticleAdapter = new MainArticleAdapter(list);
recyclerView.setAdapter(mainArticleAdapter);
网友评论