多条目就是展示不同的数据格式,首先我们需要继承的是RecyclerView,内部也是RecyclerView,因为我们需要在这个适配里添加多个适配器,进行一块展示
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
设置上下文,并且创建bean层数据,取出数据进行展示
private Context context;
private UserBean.ResultBean resultBean;
public MyAdapter(Context context, UserBean.ResultBean resultBean) {
this.context = context;
this.resultBean = resultBean;
}
创建多条目的方法,有几种数据就展示用几种方法,然后每一种方法展示一种数据
@Override
public int getItemViewType(int position) {
int type = 0;
switch (position){
case 0:
type = 0;
break;
case 1:
type = 1;
break;
case 2:
type = 2;
break;
}
return type;
}
然后在onCreateViewHolder方法中连接每一层的布局,并且通过每一层的Holder,获取每一层的控件
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
int itemViewType = getItemViewType(i);
if(itemViewType == 0){
View view = View.inflate(context,R.layout.item_one,null);
Holder holder = new Holder(view);
return holder;
}else if(itemViewType == 1){
View view = View.inflate(context,R.layout.item_two,null);
Holder2 holder2 = new Holder2(view);
return holder2;
}else if(itemViewType == 2){
View view = View.inflate(context,R.layout.item_three,null);
Holder3 holder3 = new Holder3(view);
return holder3;
}else{
return null;
}
}
在onBindViewHolder的方法内部通过Holder方法连接每个适配器,再设置上布局样式即可
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
if(viewHolder instanceof Holder){
Holder holder = (Holder) viewHolder;
List<UserBean.ResultBean.RxxpBean.CommodityListBean> commodityList = resultBean.getRxxp().getCommodityList();
holder.recycle1.setAdapter(new RxxpAdapter(context,commodityList));
holder.recycle1.setLayoutManager(new GridLayoutManager(context,3));
}else if(viewHolder instanceof Holder2){
Holder2 holder2 = (Holder2) viewHolder;
List<UserBean.ResultBean.MlssBean.CommodityListBeanXX> commodityList = resultBean.getMlss().getCommodityList();
holder2.recycle2.setAdapter(new MlssAdapter(context,commodityList));
holder2.recycle2.setLayoutManager(new LinearLayoutManager(context));
}else if(viewHolder instanceof Holder3){
Holder3 holder3 = (Holder3) viewHolder;
List<UserBean.ResultBean.PzshBean.CommodityListBeanX> commodityList = resultBean.getPzsh().getCommodityList();
holder3.recycle3.setAdapter(new PzshAdapter(context,commodityList));
holder3.recycle3.setLayoutManager(new GridLayoutManager(context,2));
}
}
条目有几种就写几种
@Override
public int getItemCount() {
return 3;
}
因为每个样式都不同,所以我创建了3个Holder继承RecyclerView.ViewHolder,生成内部的方法在里面获取控件
public static class Holder extends RecyclerView.ViewHolder{
private RecyclerView recycle1;
public Holder(@NonNull View itemView) {
super(itemView);
recycle1 = itemView.findViewById(R.id.recycle1);
}
}
public static class Holder2 extends RecyclerView.ViewHolder{
private RecyclerView recycle2;
public Holder2(@NonNull View itemView) {
super(itemView);
recycle2 = itemView.findViewById(R.id.recycle2);
}
}
public static class Holder3 extends RecyclerView.ViewHolder{
private RecyclerView recycle3;
public Holder3(@NonNull View itemView) {
super(itemView);
recycle3 = itemView.findViewById(R.id.recycle3);
}
}