Recyclerview2(复杂多布局)

效果图

在这里插入图片描述

Bean类

轮播图Bean类

public class BannerBean extends BaseBean {
    private ArrayList<String>images;

    public BannerBean(ArrayList<String> images) {
        this.images = images;
    }

    public ArrayList<String> getImages() {
        return images;
    }

    public void setImages(ArrayList<String> images) {
        this.images = images;
    }
}

中间图Bean类

public class MenuBean extends BaseBean {
    private ArrayList<String> images;//中间菜单的图片


    public MenuBean(ArrayList<String> images) {
        this.images = images;
    }

    public ArrayList<String> getImages() {
        return images;
    }

    public void setImages(ArrayList<String> images) {
        this.images = images;
    }
}

底下Bean类

public class TypeBean extends BaseBean {
    private ArrayList<String> images;//分类的图片


    public TypeBean(ArrayList<String> images) {
        this.images = images;
    }

    public ArrayList<String> getImages() {
        return images;
    }

    public void setImages(ArrayList<String> images) {
        this.images = images;
    }
}

公共Bean类

public class BaseBean {
    private int type;

    public int getType() {
        return type;
    }

    public void setType(int type) {
        this.type = type;
    }
}

适配器

最外面RecyclerView适配器

public class HomeAdpter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    public  static final int BANNER=0;
    public  static final int MENU=1;
    public  static final int TYPE=2;
    Context context;
    ArrayList<BaseBean>list;

    public HomeAdpter(Context context, ArrayList<BaseBean> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public int getItemViewType(int position) {
        if (list.get(position).getType()==0){
            return BANNER;
        }else if (list.get(position).getType()==1){
            return MENU;
        }else if (list.get(position).getType()==2){
            return TYPE;
        }
        return super.getItemViewType(position);

    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        if (viewType==BANNER){
            return new BannerViewHolder(LayoutInflater.from(context).inflate(R.layout.item_banner,null));
        }else if (viewType==MENU){
            return new MenuViewHolder(LayoutInflater.from(context).inflate(R.layout.item_menu,null));
        }else{
            return new TypeViewHolder(LayoutInflater.from(context).inflate(R.layout.item_type,null));
        }
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
        if (list.get(position).getType()==BANNER){
            BannerBean bannerBean = (BannerBean) list.get(position);
            ArrayList<String> images = bannerBean.getImages();
            final BannerViewHolder bannerViewHolder = (BannerViewHolder) holder;
            bannerViewHolder.banner.setImages(images);
            bannerViewHolder.banner.setImageLoader(new ImageLoader() {
                @Override
                public void displayImage(Context context, Object path, ImageView imageView) {
                    Glide.with(context).load(path).into(imageView);

                }
            });
            bannerViewHolder.banner.start();


        }else if (list.get(position).getType()== MENU){
            MenuBean menuBean = (MenuBean) list.get(position);
            ArrayList<String> images = menuBean.getImages();

            MyAdapter myAdapter = new MyAdapter(images, context);
            MenuViewHolder menuViewHolder = (MenuViewHolder) holder;
            menuViewHolder.recyclerView.setLayoutManager(new GridLayoutManager(context,4));
            menuViewHolder.recyclerView.setAdapter(myAdapter);


        }else if (list.get(position).getType()==TYPE){
            TypeBean typeBean = (TypeBean) list.get(position);
            ArrayList<String> images = typeBean.getImages();

            MyAdapter2 myAdapter2 = new MyAdapter2(images, context);
            TypeViewHolder typeViewHolder = (TypeViewHolder) holder;
            typeViewHolder.recyclerView.setLayoutManager(new GridLayoutManager(context,4));
            typeViewHolder.recyclerView.setAdapter(myAdapter2);
        }

    }

    @Override
    public int getItemCount() {
        return list.size();
    }


    class BannerViewHolder extends RecyclerView.ViewHolder{
        Banner banner;

        public BannerViewHolder(@NonNull View itemView) {
            super(itemView);
            banner = itemView.findViewById(R.id.banner);
        }
    }
    class MenuViewHolder extends RecyclerView.ViewHolder{
       RecyclerView recyclerView;

        public MenuViewHolder(@NonNull View itemView) {
            super(itemView);
            recyclerView = itemView.findViewById(R.id.menuRecyclerView);
        }
    }
    class TypeViewHolder extends RecyclerView.ViewHolder{
        RecyclerView recyclerView;

        public TypeViewHolder(@NonNull View itemView) {
            super(itemView);
            recyclerView = itemView.findViewById(R.id.typeRecyclerview);
        }
    }

}

中间图适配器

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MenuViewHolder> {
 ArrayList<String>list;
 Context context;

    public MyAdapter(ArrayList<String> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @NonNull
    @Override
    public MenuViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new MenuViewHolder(LayoutInflater.from(context).inflate(R.layout.layout,null));
    }

    @Override
    public void onBindViewHolder(@NonNull MenuViewHolder holder, int position) {
        Glide.with(context).load(list.get(position)).into(holder.imageView);
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    class MenuViewHolder extends RecyclerView.ViewHolder{
        ImageView imageView;
        public MenuViewHolder(@NonNull View itemView) {
            super(itemView);
            imageView=itemView.findViewById(R.id.imageview);
        }
    }

    
}

底下图适配器

public class MyAdapter2  extends RecyclerView.Adapter<MyAdapter2.TypeViewHolder> {

    ArrayList<String> list;
    Context context;

    public MyAdapter2(ArrayList<String> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @NonNull
    @Override
    public TypeViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new TypeViewHolder(LayoutInflater.from(context).inflate(R.layout.layout,null));
    }

    @Override
    public void onBindViewHolder(@NonNull TypeViewHolder holder, int position) {
        Glide.with(context).load(list.get(position)).into(holder.imageView);
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    class TypeViewHolder extends RecyclerView.ViewHolder{
        ImageView imageView;
        public TypeViewHolder(@NonNull View itemView) {
            super(itemView);
            imageView=itemView.findViewById(R.id.imageview);
        }
    }

}

MainActivity代码

public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private List<BaseBean> lists ;
    private
    String url="http://api.yunzhancn.cn/api/app.interface.php?siteid=78703&";



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        lists = new ArrayList<>();
        final HomeAdpter homeAdpter = new HomeAdpter(MainActivity.this, (ArrayList<BaseBean>) lists);
        recyclerView.setAdapter(homeAdpter);


        final List<String> list = new ArrayList<>();
        OkGo.<String>get("http://api.yunzhancn.cn/api/app.interface.php?siteid=78703&itemid=2&act=ad_app" ).execute(new StringCallback() {
            @Override
            public void onSuccess(Response<String> response) {
                String body = response.body();
                Gson gson = new Gson();
                BannerData[] bannerData = gson.fromJson(body, BannerData[].class);
                for (int i = 0; i < bannerData.length; i++) {
                    String image_src = bannerData[i].getImage_src();
                    list.add(image_src);
                    Log.d("----------", "onSuccess: "+list);
                }
                BannerBean bannerBean = new BannerBean((ArrayList<String>) list);
                bannerBean.setType(0);
                lists.add(bannerBean);
                homeAdpter.notifyDataSetChanged();
                final List<String>list1 = new ArrayList<>();
                OkGo.<String>get("http://api.yunzhancn.cn/api/app.interface.php?siteid=78703& act=column&ctype=4").execute(new StringCallback() {
                    @Override
                    public void onSuccess(Response<String> response) {
                        String body = response.body();
                        Gson gson = new Gson();
                        MenuData[] menuData = gson.fromJson(body, MenuData[].class);
                        for (int i = 0; i < menuData.length; i++) {
                            String thumb = menuData[i].getThumb();
                            list1.add(thumb);
                            Log.d(",,,,,,,", "onSuccess: "+list1);
                        }
                        MenuBean menuBean = new MenuBean((ArrayList<String>) list1);
                        menuBean.setType(1);
                        lists.add(menuBean);
                        homeAdpter.notifyDataSetChanged();
                        final List<String>list2 = new ArrayList<>();
                        OkGo.<String>get("http://api.yunzhancn.cn/api/app.interface.php?siteid=78703&act=column&ctype=2&mid=16").execute(new StringCallback() {
                            @Override
                            public void onSuccess(Response<String> response) {
                                String body = response.body();
                                Gson gson = new Gson();
                                TypeData[] typeData = gson.fromJson(body, TypeData[].class);
                                for (int i = 0; i < typeData.length; i++) {
                                    String thumb = typeData[i].getThumb();
                                    list2.add(thumb);
                                    Log.d("***********", "onSuccess: "+list2);
                                }
                                TypeBean typeBean = new TypeBean((ArrayList<String>) list2);
                                typeBean.setType(2);
                                lists.add(typeBean);
                                homeAdpter.notifyDataSetChanged();
                            }
                        });
                    }

                });

            }

        });



    }


}

xml布局

mainActivity布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">
    <androidx.recyclerview.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/recyclerView"></androidx.recyclerview.widget.RecyclerView>



</LinearLayout>

banner轮播图布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <com.youth.banner.Banner
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:id="@+id/banner"></com.youth.banner.Banner>


</LinearLayout>

中间图适配器

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/menuRecyclerView"
        android:layout_width="440dp"
        android:layout_height="wrap_content"></androidx.recyclerview.widget.RecyclerView>

</LinearLayout>

底下图布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <TextView
        android:layout_width="440dp"
        android:layout_height="40dp"
        android:text="产品分类"
        android:textColor="#007FEA"
        android:gravity="center"
        android:textSize="20sp"
        android:id="@+id/textview"></TextView>
    <androidx.recyclerview.widget.RecyclerView
        android:layout_width="440dp"
        android:layout_height="wrap_content"
        android:id="@+id/typeRecyclerview"></androidx.recyclerview.widget.RecyclerView>
</LinearLayout>

recyclerView小布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:id="@+id/imageview"></ImageView>

</LinearLayout>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值