效果图
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>