。。。这篇文章适合一些会recyclerView适配器但是不会多布局的萌新参考
1 每个布局写一个XML (名字起的不规范 嘿嘿)
具体的XML内容我就不写了吧 有萌新看不懂的话 可以留言 我再发
2 recyclerView的适配器继承什么的我就不写了吧
首先在适配器里写一个getItemType方法:
if判断设置type的返回值 position==0就是recyclerView的第一行显示的内容 因为我这个布局是固定的所以这么判断 你可以根据自己的情况来改
@Override
public int getItemViewType(int position) {
if (position == 0) {
return 0;
} else if (position == 1) {
return 1;
} else if (position == 2) {
return 2;
}
return super.getItemViewType(position);
}
然后在onCreateViewHolder方法里引入布局:
if判断i的值 i其实就是上边返回的type的值
然后分别导入布局 这些布局全继承RecyclerView.ViewHolder 分别return viewHolder
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
if (i == 0) {
View inflate = LayoutInflater.from(context).inflate(R.layout.layout_1, viewGroup, false);
RecyclerView.ViewHolder viewHolder = new ViewHolder1(inflate);
return viewHolder;
} else if (i == 1) {
View inflate = LayoutInflater.from(context).inflate(R.layout.layout_2, viewGroup, false);
RecyclerView.ViewHolder viewHolder = new ViewHolder2(inflate);
return viewHolder;
} else if (i == 2) {
View inflate = LayoutInflater.from(context).inflate(R.layout.layout_3, null, false);
RecyclerView.ViewHolder viewHolder = new ViewHolder3(inflate);
return viewHolder;
}
return null;
}
public static class ViewHolder1 extends RecyclerView.ViewHolder {
public View rootView;
public Banner banner;
public ViewHolder1(View rootView) {
super(rootView);
this.rootView = rootView;
this.banner = (Banner) rootView.findViewById(R.id.banner);
}
}
public static class ViewHolder2 extends RecyclerView.ViewHolder {
public View rootView;
public RecyclerView mRecyc2;
public ViewHolder2(View rootView) {
super(rootView);
this.rootView = rootView;
this.mRecyc2 = (RecyclerView) rootView.findViewById(R.id.mRecyc2);
}
}
public static class ViewHolder3 extends RecyclerView.ViewHolder {
public View rootView;
public RecyclerView mRecyc3;
public ViewHolder3(View rootView) {
super(rootView);
this.rootView = rootView;
this.mRecyc3 = (RecyclerView) rootView.findViewById(R.id.mRecyc3);
}
}
最后在onBindViewHolder赋值:
if判断viewHodler是否继承与当前布局文件(emmm看名字很好懂的)
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
if (viewHolder instanceof ViewHolder1) {
for (int j = 0; j <mList.size() ; j++) {
images.add(mList.get(j).getThumbnail_pic_s());
}
((ViewHolder1) viewHolder).banner.setImageLoader(new GlideImageLoader())
.setImages(images)
.start();
}
if (viewHolder instanceof ViewHolder2) {
LinearLayoutManager manager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);
((ViewHolder2) viewHolder).mRecyc2.setLayoutManager(manager);
TwoAdapter adapter = new TwoAdapter(R.layout.layout_2a, mList);
((ViewHolder2) viewHolder).mRecyc2.setAdapter(adapter);
}
if (viewHolder instanceof ViewHolder3) {
LinearLayoutManager manager = new LinearLayoutManager(context);
((ViewHolder3) viewHolder).mRecyc3.setLayoutManager(manager);
ThreeAdapter adapter = new ThreeAdapter(R.layout.layout_3a, mList);
((ViewHolder3) viewHolder).mRecyc3.setAdapter(adapter);
}
}
再然后就没了 使用适配器就行了 希望大家能指点下 给点建议 谢谢