//泛型必须为RecyclerView.ViewHolder public class Myadapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { //定义常量 确定多条目加载类型 final static int TYPE_ONE=1; final static int TYPE_TWO=2; final static int TYPE_THREE=3; private Context context; //shop为请求过来的bean类 private Shop shop; RecyclerView recyclerView; private Bannerhodler bannerhodler; private final List<Shop.DataBean.SubjectsBean> subjects; List<String> bannerlist=new ArrayList<>(); private Feileihodler feileihodler; private final List<Shop.DataBean.DefaultGoodsListBean> defaultGoodsList; public Myadapter(Context context, Shop shop,RecyclerView recyclerView) { this.context = context; this.shop = shop; this.recyclerView=recyclerView; defaultGoodsList = shop.getData().getDefaultGoodsList(); subjects = shop.getData().getSubjects(); } //一共返回3种试图 @Override public int getItemCount() { return 3; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { switch (viewType) { //第一种试图为banner case TYPE_ONE: View inflate = View.inflate(context, R.layout.rec_banner, null); bannerhodler = new Bannerhodler(inflate); return bannerhodler; //fragment_child1_duo布局文件为RecyclerView控件 case TYPE_TWO: View inflate1 = View.inflate(context, R.layout.fragment_child1_duo, null); feileihodler = new Feileihodler(inflate1); return feileihodler; //共用一个布局文件 case TYPE_THREE: View inflate2 = View.inflate(context, R.layout.fragment_child1_duo, null); Xiangqing xiangqing=new Xiangqing(inflate2); return xiangqing; } return null; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { //banner的优化类 if (holder instanceof Bannerhodler){ for (int i = 0; i <subjects.size() ; i++) { bannerlist.add(subjects.get(i).getDescImage()); } ((Bannerhodler) holder).banner.setImages(bannerlist); ((Bannerhodler) holder).banner.setImageLoader(new Myloader()); ((Bannerhodler) holder).banner.setIndicatorGravity(BannerConfig.CIRCLE_INDICATOR_TITLE) .start(); } //在里面设置各自的适配器 和显示的布局 if (holder instanceof Feileihodler){ Feileiadapter feileiadapter=new Feileiadapter(context,defaultGoodsList); ((Feileihodler) holder).recyclerview1.setAdapter(feileiadapter); ((Feileihodler) holder).recyclerview1.setLayoutManager(new GridLayoutManager(context,2,GridLayoutManager.HORIZONTAL,false)); } if (holder instanceof Xiangqing){ Xiangqingadapter xiangqingadapter=new Xiangqingadapter(context,subjects); ((Xiangqing) holder).recyclerview1.setAdapter(xiangqingadapter); ((Xiangqing) holder).recyclerview1.setLayoutManager(new LinearLayoutManager(context)); } } //重写返回条目类型的方法 @Override public int getItemViewType(int position) { if (position==0) { return TYPE_ONE; } if (position==1){ return TYPE_TWO; } if (position==2){ return TYPE_THREE; } return 0; } //banner的优化类 无限轮播图 class Bannerhodler extends RecyclerView.ViewHolder{ public Banner banner; public Bannerhodler(View itemView) { super(itemView); this.banner=itemView.findViewById(R.id.banner); } } //水平两列的优化类 第二个试图 class Feileihodler extends RecyclerView.ViewHolder{ public RecyclerView recyclerview1; public Feileihodler(View itemView) { super(itemView); this.recyclerview1=itemView.findViewById(R.id.recyclerview1); } } //第三个优化类 详情 class Xiangqing extends RecyclerView.ViewHolder{ public RecyclerView recyclerview1; public Xiangqing(View itemView) { super(itemView); this.recyclerview1=itemView.findViewById(R.id.recyclerview1); } } //banner设置适配器的代码 class Myloader extends ImageLoader { @Override public void displayImage(Context context, Object path, ImageView imageView) { Glide.with(context).load((String) path).into(imageView); } } }
参考 http://blog.csdn.net/Mango_ct/article/details/78333222?locationNum=3&fps=1