RecyclerView多条目

本文介绍了如何在Android中利用RecyclerView来展示多种不同的列表项。从Api调用开始,涉及Bean对象的创建、HTTP请求的编写,然后是MVP架构的应用,包括Model层的接口定义、Presenter层的实现及View接口设计。在MainActivity中,设置了第一个Fragment,并进一步构建了四个Adapter,其中一个是总的适配器,另外三个分别为不同类型的列表项提供适配。具体涉及到的Adapter包括第二个和第三个Adapter,以及总的Adapter的详细实现。
摘要由CSDN通过智能技术生成

Api

package com.example.yf.dtm.api;

public class Api {
    public static final String BASE_URL="http://172.17.8.100";
    //首页商品信息列表
    public static String SHOPLIST=BASE_URL+"/small/commodity/v1/commodityList";
    public static String XBANNER=BASE_URL+"/small/commodity/v1/bannerShow";
    //登录接口
    public static String LOGIN=BASE_URL+"/small/user/v1/login";
    public static String Zhu=BASE_URL+"/small/user/v1/register";
    public static String HAHA= "http://api.expoon.com/AppNews/getNewsList/type/1/p?page=1";
    public static String XIANG= "http://172.17.8.100/small/commodity/v1/findCommodityDetailsById";



}

bean

package com.example.yf.dtm.bean;
import java.io.Serializable;
import java.util.List;

public class ShowBean implements Serializable
{
    public String message;
    public String status;
    public Product result;

    public static class Product{
        public List<ProductItemBean> rxxp;
        public List<ProductItemBean> pzsh;
        public List<ProductItemBean> mlss;
    }

    public class ProductItemBean {

        public String id;
        public String name;
        public List<ProductItem>  commodityList;

        public  class  ProductItem{
            public String commodityId;
            public String commodityName;
            public String masterPic;
            public String price;
            public String saleNum;
        }



    }

    /**
     * result : {"rxxp":[{"commodityList":[{"commodityId":27,"commodityName":"休闲马衔扣保暖绒里棉鞋懒人鞋毛毛鞋平底女雪地靴女短靴子豆豆鞋女鞋","masterPic":"http://172.17.8.100/images/small/commodity/nx/ddx/3/1.jpg","price":139,"saleNum":0},{"commodityId":21,"commodityName":"【加绒休闲 舒适轻便】秋冬增高休闲鞋厚底棉鞋运动户外通勤简约韩版女鞋","masterPic":"http://172.17.8.100/images/small/commodity/nx/bx/4/1.jpg","price":189,"saleNum":0},{"commodityId":5,"commodityName":"双头两用修容笔","masterPic":"http://172.17.8.100/images/small/commodity/mzhf/cz/3/1.jpg","price":39,"saleNum":156}],"id":1002,"name":"热销新品"}],"pzsh":[{"commodityList":[{"commodityId":6,"commodityName":"轻柔系自然裸妆假睫毛","masterPic":"http://172.17.8.100/images/small/commodity/mzhf/cz/4/1.jpg","price":39,"saleNum":0},{"commodityId":15,"commodityName":"玻儿精灵美妆蛋一个","masterPic":"http://172.17.8.100/images/small/commodity/mzhf/mzgj/5/1.jpg","price":6,"saleNum":0},{"commodityId":7,"commodityName":"蓝色之恋","masterPic":"http://172.17.8.100/images/small/commodity/mzhf/cz/5/1.jpg","price":29,"saleNum":0},{"commodityId":3,"commodityName":"Lara style女神的魔盒全套彩妆","masterPic":"http://172.17.8.100/images/small/commodity/mzhf/cz/1/1.jpg","price":3499,"saleNum":2000}],"id":1004,"name":"品质生活"}],"mlss":[{"commodityList":[{"commodityId":32,"commodityName":"唐狮女鞋冬季女鞋休闲鞋子女士女鞋百搭帆布鞋女士休闲鞋子女款板鞋休闲女鞋帆布鞋","masterPic":"http://172.17.8.100/images/small/commodity/nx/fbx/1/1.jpg","price":88,"saleNum":0},{"commodityId":18,"commodityName":"白色经典 秋季新款简约百搭轻便休闲女鞋板鞋小白鞋","masterPic":"http://172.17.8.100/images/small/commodity/nx/bx/1/1.jpg","price":79,"saleNum":0}],"id":1003,"name":"魔力时尚"}]}
     * message : 查询成功
     * status : 0000
     */

   /* private ResultBean result;
    private String message;
    private String status;

    public ResultBean getResult() {
        return result;
    }

    public void setResult(ResultBean result) {
        this.result = result;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public static class ResultBean {
        private List<RxxpBean> rxxp;
        private List<RxxpBean> pzsh;
        private List<RxxpBean> mlss;

        public List<RxxpBean> getRxxp() {
            return rxxp;
        }

        public void setRxxp(List<RxxpBean> rxxp) {
            this.rxxp = rxxp;
        }

        public List<PzshBean> getPzsh() {
            return pzsh;
        }

        public void setPzsh(List<PzshBean> pzsh) {
            this.pzsh = pzsh;
        }

        public List<MlssBean> getMlss() {
            return mlss;
        }

        public void setMlss(List<MlssBean> mlss) {
            this.mlss = mlss;
        }

        public static class RxxpBean {
            *//**
             * commodityList : [{"commodityId":27,"commodityName":"休闲马衔扣保暖绒里棉鞋懒人鞋毛毛鞋平底女雪地靴女短靴子豆豆鞋女鞋","masterPic":"http://172.17.8.100/images/small/commodity/nx/ddx/3/1.jpg","price":139,"saleNum":0},{"commodityId":21,"commodityName":"【加绒休闲 舒适轻便】秋冬增高休闲鞋厚底棉鞋运动户外通勤简约韩版女鞋","masterPic":"http://172.17.8.100/images/small/commodity/nx/bx/4/1.jpg","price":189,"saleNum":0},{"commodityId":5,"commodityName":"双头两用修容笔","masterPic":"http://172.17.8.100/images/small/commodity/mzhf/cz/3/1.jpg","price":39,"saleNum":156}]
             * id : 1002
             * name : 热销新品
             *//*

            private int id;
            private String name;
            private List<CommodityListBean> commodityList;

            public int getId() {
                return id;
            }

            public void setId(int id) {
                this.id = id;
            }

            public String getName() {
                return name;
            }

            public void setName(String name) {
                this.name = name;
            }

            public List<CommodityListBean> getCommodityList() {
                return commodityList;
            }

            public void setCommodityList(List<CommodityListBean> commodityList) {
                this.commodityList = commodityList;
            }

            public static class CommodityListBean {
                *//**
                 * commodityId : 27
                 * commodityName : 休闲马衔扣保暖绒里棉鞋懒人鞋毛毛鞋平底女雪地靴女短靴子豆豆鞋女鞋
                 * masterPic : http://172.17.8.100/images/small/commodity/nx/ddx/3/1.jpg
                 * price : 139
                 * saleNum : 0
                 *//*

                private int commodityId;
                private String commodityName;
                private String masterPic;
                private int price;
                private int saleNum;

                public int getCommodityId() {
                    return commodityId;
                }

                public void setCommodityId(int commodityId) {
                    this.commodityId = commodityId;
                }

                public String getCommodityName() {
                    return commodityName;
                }

                public void setCommodityName(String commodityName) {
                    this.commodityName = commodityName;
                }

                public String getMasterPic() {
                    return masterPic;
                }

                public void setMasterPic(String masterPic) {
                    this.masterPic = masterPic;
                }

                public int getPrice() {
                    return price;
                }

                public void setPrice(int price) {
                    this.price = price;
                }

                public int getSaleNum() {
                    return saleNum;
                }

                public void setSaleNum(int saleNum) {
                    this.saleNum = saleNum;
                }
            }
        }

        public static class PzshBean {
            *//**
             * commodityList : [{"commodityId":6,"commodityName":"轻柔系自然裸妆假睫毛","masterPic":"http://172.17.8.100/images/small/commodity/mzhf/cz/4/1.jpg","price":39,"saleNum":0},{"commodityId":15,"commodityName":"玻儿精灵美妆蛋一个","masterPic":"http://172.17.8.100/images/small/commodity/mzhf/mzgj/5/1.jpg","price":6,"saleNum":0},{"commodityId":7,"commodityName":"蓝色之恋","masterPic":"http://172.17.8.100/images/small/commodity/mzhf/cz/5/1.jpg","price":29,"saleNum":0},{"commodityId":3,"commodityName":"Lara style女神的魔盒全套彩妆","masterPic":"http://172.17.8.100/images/small/commodity/mzhf/cz/1/1.jpg","price":3499,"saleNum":2000}]
             * id : 1004
             * name : 品质生活
             *//*

            private int id;
            private String name;
            private List<CommodityListBeanX> commodityList;

            public int getId() {
                return id;
            }

            public void setId(int id) {
                this.id = id;
            }

            public String getName() {
                return name;
            }

            public void setName(String name) {
                this.name = name;
            }

            public List<CommodityListBeanX> getCommodityList() {
                return commodityList;
            }

            public void setCommodityList(List<CommodityListBeanX> commodityList) {
                this.commodityList = commodityList;
            }

            public static class CommodityListBeanX {
                *//**
                 * commodityId : 6
                 * commodityName : 轻柔系自然裸妆假睫毛
                 * masterPic : http://172.17.8.100/images/small/commodity/mzhf/cz/4/1.jpg
                 * price : 39
                 * saleNum : 0
                 *//*

                private int commodityId;
                private String commodityName;
                private String masterPic;
                private int price;
                private int saleNum;

                public int getCommodityId() {
                    return commodityId;
                }

                public void setCommodityId(int commodityId) {
                    this.commodityId = commodityId;
                }

                public String getCommodityName() {
                    return commodityName;
                }

                public void setCommodityName(String commodityName) {
                    this.commodityName = commodityName;
                }

                public String getMasterPic() {
                    return masterPic;
                }

                public void setMasterPic(String masterPic) {
                    this.masterPic = masterPic;
                }

                public int getPrice() {
                    return price;
                }

                public void setPrice(int price) {
                    this.price = price;
                }

                public int getSaleNum() {
                    return saleNum;
                }

                public void setSaleNum(int saleNum) {
                    this.saleNum = saleNum;
                }
            }
        }

        public static class MlssBean {
            *//**
             * commodityList : [{"commodityId":32,"commodityName":"唐狮女鞋冬季女鞋休闲鞋子女士女鞋百搭帆布鞋女士休闲鞋子女款板鞋休闲女鞋帆布鞋","masterPic":"http://172.17.8.100/images/small/commodity/nx/fbx/1/1.jpg","price":88,"saleNum":0},{"commodityId":18,"commodityName":"白色经典 秋季新款简约百搭轻便休闲女鞋板鞋小白鞋","masterPic":"http://172.17.8.100/images/small/commodity/nx/bx/1/1.jpg","price":79,"saleNum":0}]
             * id : 1003
             * name : 魔力时尚
             *//*

            private int id;
            private String name;
            private List<CommodityListBeanXX> commodityList;

            public int getId() {
                return id;
            }

            public void setId(int id) {
                this.id = id;
            }

            public String getName() {
                return name;
            }

            public void setName(String name) {
                this.name = name;
            }

            public List<CommodityListBeanXX> getCommodityList() {
                return commodityList;
            }

            public void setCommodityList(List<CommodityListBeanXX> commodityList) {
                this.commodityList = commodityList;
            }

            public static class CommodityListBeanXX {
                *//**
                 * commodityId : 32
                 * commodityName : 唐狮女鞋冬季女鞋休闲鞋子女士女鞋百搭帆布鞋女士休闲鞋子女款板鞋休闲女鞋帆布鞋
                 * masterPic : http://172.17.8.100/images/small/commodity/nx/fbx/1/1.jpg
                 * price : 88
                 * saleNum : 0
                 *//*

                private int commodityId;
                private String commodityName;
                private String masterPic;
                private int price;
                private int saleNum;

                public int getCommodityId() {
                    return commodityId;
                }

                public void setCommodityId(int commodityId) {
                    this.commodityId = commodityId;
                }

                public String getCommodityName() {
                    return commodityName;
                }

                public void setCommodityName(String commodityName) {
                    this.commodityName = commodityName;
                }

                public String getMasterPic() {
                    return masterPic;
                }

                public void setMasterPic(String masterPic) {
                    this.masterPic = masterPic;
                }

                public int getPrice() {
                    return price;
                }

                public void setPrice(int price) {
                    this.price = price;
                }

                public int getSaleNum() {
                    return saleNum;
                }

                public void setSaleNum(int saleNum) {
                    this.saleNum = saleNum;
                }
            }
        }
    }*/
}

 

 

写http

package com.example.yf.dtm.okhttp;

import android.os.Environment;
import android.os.Handler;
import android.util.Log;

import com.google.gson.Gson;

import java.io.File;
import java.io.IOException;
import java.util.Map;
import java.util.concurrent.TimeUnit;

import okhttp3.Cache;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class HttpUtils {
    private static final String TAG = "HttpUtils";
    private static volatile HttpUtils instance;
    public Handler handler = new Handler();
    private OkHttpClient client;
    private Interceptor getAppInterceptor(){
        //添加拦截器
        Interceptor interceptor = new Interceptor() {
            @Override
            public Response intercept(Chain chain) throws IOException {
                Request request = chain.request();
                Log.e("++++++++++","拦截前");
                //---------请求之前------------
                Response response = chain.proceed(request);
                Log.e("++++++++++","拦截后");
                //---------请求之后------------
                return response;
            }
        };
        return interceptor;
    }
    private HttpUtils() {
        File file = new File(Environment.getExternalStorageDirectory(), "cache11");
        client = new OkHttpClient().newBuilder()
                .readTimeout(3000, TimeUnit.SECONDS)   //设置读取超时时间
                .connectTimeout(3000, TimeUnit.SECONDS) //设置连接的超时时间
                .addInterceptor(getAppInterceptor())//Application拦截器
                .cache(new Cache(file, 10 * 1024))
                .build();
    }
    //单例okhttp
    public static HttpUtils getInstance() {
        if (instance == null) {
            synchronized (HttpUtils.class) {
                if(null == instance) {
                    instance = new HttpUtils();
                }
            }
        }
        return instance;
    }
    public void doGet(String url, final Class clazz, final NetCallBack netCallBack) {
        // 2. 创建一个请求对象
        Request request = new Request.Builder()
                .get()
                .url(url)
                .build();

        // 3. 创建出一个Call对象
        Call call = client.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        netCallBack.onFailure(e);
                    }
                });

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String result = response.body().string();
                Gson gson = new Gson();
                final Object oj = gson.fromJson(result, clazz);
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        netCallBack.onSuccess(oj);

                    }
                });
            }
        });
    }
    public void doPost(String url, final Class clazz, Map<String,String> parms, final NetCallBack netCallBack){

        FormBody.Builder body = new FormBody.Builder();
        //key   value
        for (String key:parms.keySet()){
            //value的值
            body.add(key,parms.get(key));
        }
        Request request = new Request.Builder()
                .url(url)
                .post(body.build())
                .build();
        // 3. 创建出一个Call对象
        Call call = client.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        netCallBack.onFailure(e);
                    }
                });
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                // 注意:response.body()只能用一次
//                Log.i(TAG, "onResponse: "+response.body().string());
                String result = response.body().string();
                Gson gson = new Gson();
                final Object oj = gson.fromJson(result, clazz);
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        netCallBack.onSuccess(oj);
                    }
                });
            }
        });
    }
    public interface NetCallBack {
        void onSuccess(Object oj);

        void onFailure(Exception e);
    }


}

 

package com.example.yf.dtm.okhttp;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class OkHttp3 {
    private static OkHttpClient okHttpClient;
    private static Request request;
    private static FormBody builder;

    public static void okHttpGet(String url, final GetBackGet getBackGet){
        okHttpClient = new OkHttpClient();
        request = new Request.Builder().url(url).method("GET", null).build();
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                getBackGet.getTrue(response.body().string());
            }
        });
    }
    public static void okHttpPost(final String url, final String name, final String pwd, final GetBackPost getBackPost){
        okHttpClient = new OkHttpClient();
         builder = new FormBody.Builder().add("phone", name).add("pwd", pwd).build();
        //创建request
        request = new Request
                .Builder()
                .url(url)
                .post(builder)
                .build();
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                getBackPost.getTrue("出错了");
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                getBackPost.getTrue(response.body().string());
            }
        });
    }
    //自定义接口
    public interface GetBackGet{
        public void getTrue(String succ);
    }
    public interface GetBackPost{
        public void getTrue(String succ);
    }
}

 

创建Mvp

model层

package com.example.yf.dtm.model;

import android.util.Log;

import com.example.yf.dtm.bean.ShowBean;
import com.example.yf.dtm.okhttp.HttpUtils;
import com.example.yf.dtm.okhttp.OkHttp3;

public class Model implements IModel{

    @Override
    public void getdata(String url, final Callback callback) {
        HttpUtils.getInstance().doGet(url, ShowBean.class, new HttpUtils.NetCallBack() {
            @Override
            public void onSuccess(Object oj) {
                callback.Success(oj);
            }

            @Override
            public void onFailure(Exception e) {

            }
        });
    }

    @Override
    public void getdataimg(String url, final Callbackimg callbackimg) {
        OkHttp3.okHttpGet(url,new OkHttp3.GetBackGet() {
            @Override
            public void getTrue(String succ) {
                    callbackimg.Success(succ);
                Log.i("getTrue",succ);
            }
        });
    }
}



 

model接口

package com.example.yf.dtm.model;

import javax.security.auth.callback.Callback;

public interface IModel {
    void getdata(String url, Callback callback);
    interface Callback{
        void Success(Object oj);
    }
    void getdataimg(String url,Callbackimg callbackimg);
    interface Callbackimg{
        void Success(String oj);
    }
}

presenter层

package com.example.yf.dtm.presenter;

import com.example.yf.dtm.api.Api;
import com.example.yf.dtm.fragment.FragmentOne;
import com.example.yf.dtm.model.IModel;
import com.example.yf.dtm.model.Model;

public class Presenter implements IPresenter{
    FragmentOne fragmentOne;
    private final Model model;

    public Presenter(FragmentOne fragmentOne) {
        this.fragmentOne = fragmentOne;
        model = new Model();
    }
    //数据

    @Override
    public void getshowmodeldata() {
        model.getdata(Api.SHOPLIST, new IModel.Callback() {
            @Override
            public void Success(Object oj) {
                fragmentOne.getPredata(oj);
            }
        });
    }
    //图片

    @Override
    public void getmodelimagedata(String url) {
        model.getdataimg(url, new IModel.Callbackimg() {
            @Override
            public void Success(String oj) {
                fragmentOne.getPredata(oj);
            }
        });
    }
}

presenter接口

package com.example.yf.dtm.presenter;

public interface IPresenter {
    void getshowmodeldata();
    void getmodelimagedata(String url);
}

view接口

package com.example.yf.dtm.view;

public interface IView {
    void getPredata(String data);
}

mainactivity

package com.example.yf.dtm;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toolbar;

import com.example.yf.dtm.fragment.FragmentFive;
import com.example.yf.dtm.fragment.FragmentFour;
import com.example.yf.dtm.fragment.FragmentOne;
import com.example.yf.dtm.fragment.FragmentThree;
import com.example.yf.dtm.fragment.FragmentTwo;
import com.hjm.bottomtabbar.BottomTabBar;

public class MainActivity extends AppCompatActivity {
    private BottomTabBar fragment;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        fragment = findViewById(R.id.fragment);
        fragment.init(getSupportFragmentManager())
                .setImgSize(50, 50)
                .setFontSize(8)
                .setTabPadding(4, 6, 10)
                .setChangeColor(Color.RED, Color.DKGRAY)
                .addTabItem("首页", R.drawable.ufos, FragmentOne.class)
                .addTabItem("分类", R.drawable.fangs, FragmentTwo.class)
                .addTabItem("发现", R.drawable.my, FragmentThree.class)
                .addTabItem("购物车", R.drawable.ufos, FragmentFour.class)
                .addTabItem("我的", R.drawable.my, FragmentFive.class)
                .isShowDivider(false);
    }
}

第一个fragment 

package com.example.yf.dtm.fragment;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.example.yf.dtm.R;
import com.example.yf.dtm.adapter.MyAdapter;
import com.example.yf.dtm.bean.NewsBeanTwo;
import com.example.yf.dtm.bean.ShowBean;
import com.example.yf.dtm.presenter.Presenter;
import com.example.yf.dtm.view.IView;
import com.google.gson.Gson;
import com.stx.xhb.xbanner.XBanner;
import com.stx.xhb.xbanner.transformers.Transformer;

import java.util.ArrayList;
import java.util.List;

public class FragmentOne extends Fragment implements IView {

    private RecyclerView recy;
    private Presenter presenter;
    private String name;
    private XBanner xbanner;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.one, container, false);
        recy = view.findViewById(R.id.recy);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
        recy.setLayoutManager(linearLayoutManager);
        presenter = new Presenter(this);
        presenter.getmodelimagedata("http://172.17.8.100/small/commodity/v1/bannerShow");
        presenter.getshowmodeldata();
        xbanner = view.findViewById(R.id.xbanner);
        return view;
    }

    public void getPredata(Object oj) {
        ShowBean showBean = (ShowBean) oj;
//        name = showBean.result.mlss.get(0).name;
//        Log.i("aaa","getData"+name);
        List<ShowBean.ProductItemBean> list = new ArrayList<>();
        list.addAll(showBean.result.rxxp);
        list.addAll(showBean.result.pzsh);
        list.addAll(showBean.result.mlss);

        MyAdapter myAdapter = new MyAdapter(getActivity(),list);
        recy.setAdapter(myAdapter);
    }

    @Override
    public void getPredata( final String data) {
        getActivity().runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Gson gson = new Gson();
                final List<String>list = new ArrayList<>();
                NewsBeanTwo two = gson.fromJson(data, NewsBeanTwo.class);
                List<NewsBeanTwo.ResultBean>result = two.getResult();
                for (int i = 0; i < result.size(); i++) {
                    list.add(result.get(i).getImageUrl());
                }
                xbanner.setData(list,null);
                xbanner.setmAdapter(new XBanner.XBannerAdapter() {
                    @Override
                    public void loadBanner(XBanner banner, View view, int position) {
                        Glide.with(getActivity()).load(list.get(position)).into((ImageView) view);
                    }
                });
                xbanner.setPageTransformer(Transformer.Default);
                xbanner.setPageChangeDuration(1000);

            }
        });
    }
}

再写4个adapter,一个总的3个副的

package com.example.yf.dtm.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.example.yf.dtm.R;
import com.example.yf.dtm.bean.ShowBean;

import java.util.List;
import java.util.zip.Inflater;

public class OneAdapter extends RecyclerView.Adapter<OneAdapter.HlistViewHodel>{
    Context context;
    List<ShowBean.ProductItemBean.ProductItem> list;

    public OneAdapter(Context context, List<ShowBean.ProductItemBean.ProductItem> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public HlistViewHodel onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View mView;
        mView=View.inflate(viewGroup.getContext(),R.layout.adapterone,null);
        return new HlistViewHodel(mView);

    }
    @NonNull
    @Override
    public void onBindViewHolder(@NonNull final HlistViewHodel hlistViewHodel, final int i) {
        hlistViewHodel.name.setText(list.get(i).commodityName);
        hlistViewHodel.price.setText(list.get(i).price);
        Glide.with(context).load(list.get(i).masterPic).into(hlistViewHodel.img);

    }
    @Override
    public int getItemCount() {
        return list.size();
    }
    public class HlistViewHodel extends RecyclerView.ViewHolder {
        ImageView img;
        TextView name;
        TextView price;
        public HlistViewHodel(@NonNull View itemView) {
            super(itemView);
            img = itemView.findViewById(R.id.img);
            price = itemView.findViewById(R.id.price);
            name =  itemView.findViewById(R.id.name);
        }
    }

}

第二个adapter

package com.example.yf.dtm.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.example.yf.dtm.R;
import com.example.yf.dtm.bean.ShowBean;

import java.util.List;

public class TwoAdapter extends RecyclerView.Adapter<TwoAdapter.TwoViewHolder> {
    Context context;
    List<ShowBean.ProductItemBean.ProductItem>list;
    public TwoAdapter(Context context, List<ShowBean.ProductItemBean.ProductItem> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public TwoViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View mView;
        mView = View.inflate(viewGroup.getContext(), R.layout.adapterone, null);
        return new TwoViewHolder(mView);
    }

    @NonNull
    @Override
    public void onBindViewHolder(@NonNull final TwoViewHolder twoViewHolder,final int i) {

        twoViewHolder.name.setText(list.get(i).commodityName);
        twoViewHolder.price.setText(list.get(i).price);
        Glide.with(context).load(list.get(i).masterPic).into(twoViewHolder.img);
    }

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

    public class TwoViewHolder extends RecyclerView.ViewHolder {
        ImageView img;
        TextView name;
        TextView price;
        public TwoViewHolder(@NonNull View itemView) {
            super(itemView);
            img = itemView.findViewById(R.id.img);
            price = itemView.findViewById(R.id.price);
            name =  itemView.findViewById(R.id.name);
        }
    }
}

第三个adapter

package com.example.yf.dtm.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.example.yf.dtm.R;
import com.example.yf.dtm.bean.ShowBean;

import java.util.List;

public class ThreeAdapter extends RecyclerView.Adapter<ThreeAdapter.ThreeViewHolder> {
    Context context;
    List<ShowBean.ProductItemBean.ProductItem> commodityList1;

    public ThreeAdapter(Context context, List<ShowBean.ProductItemBean.ProductItem> commodityList1) {
        this.context = context;
        this.commodityList1 = commodityList1;
    }
    @NonNull
    @Override
    public ThreeViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = View.inflate(context, R.layout.adapterthree, null);
        ThreeViewHolder threeViewHolder = new ThreeViewHolder(view);
        return threeViewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull ThreeViewHolder threeViewHolder, int i) {
        threeViewHolder.name.setText(commodityList1.get(i).commodityName);
        threeViewHolder.price.setText(commodityList1.get(i).price);
        Glide.with(context).load(commodityList1.get(i).masterPic).into(threeViewHolder.img);
    }



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

    public class ThreeViewHolder extends RecyclerView.ViewHolder {
        ImageView img;
        TextView name;
        TextView price;
        public ThreeViewHolder(@NonNull View itemView) {
            super(itemView);
            img = itemView.findViewById(R.id.img);
            price = itemView.findViewById(R.id.price);
            name =  itemView.findViewById(R.id.name);
        }
    }
}

 

总adapter

package com.example.yf.dtm.adapter;

import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.OrientationHelper;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.example.yf.dtm.R;
import com.example.yf.dtm.bean.ShowBean;

import java.util.List;

public class MyAdapter extends RecyclerView.Adapter {
    Context context;
    private final int RXXP_VIEW = 1;
    private final int PZSH_VIEW = 2;
    private final int MLSS_VIEW = 3;
    private List<ShowBean.ProductItemBean> resultBeans;
    private List<ShowBean.ProductItemBean.ProductItem> commodityList1;
    private OneAdapter hListAdapter;
    private TwoAdapter twoListAdapter;
    private ThreeAdapter sanListAdapter;
    private Intent intent;
    private List<ShowBean.ProductItemBean.ProductItem> commodityList;
    private OneAdapter oneAdapter;

    public MyAdapter(Context context, List<ShowBean.ProductItemBean> resultBeans) {
        this.context = context;
        this.resultBeans = resultBeans;
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View mView;
        if(i==RXXP_VIEW)
        {
            mView=View.inflate(viewGroup.getContext(),R.layout.item1,null);
            return new Item1ViewHolder(mView);
        }else if(i == PZSH_VIEW)
        {
            return new Item2ViewHolder(LayoutInflater.from(context).inflate(R.layout.item2,viewGroup,false));
        }
        else {
            return new Item3ViewHolder(LayoutInflater.from(context).inflate(R.layout.item3,viewGroup,false));
        }
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, final int i) {
        if(viewHolder instanceof Item1ViewHolder)
        {
            ((Item1ViewHolder) viewHolder).rxxp.setText(resultBeans.get(i).name);
            commodityList1 = resultBeans.get(i).commodityList;
            LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context,LinearLayoutManager.HORIZONTAL,false);
            ((Item1ViewHolder) viewHolder).rv.setLayoutManager(linearLayoutManager);
            hListAdapter = new OneAdapter(context,commodityList1);
            ((Item1ViewHolder) viewHolder).rv.setAdapter(hListAdapter);
        }
        if(viewHolder instanceof  Item2ViewHolder)
        {
            ((Item2ViewHolder) viewHolder).pzsh.setText(resultBeans.get(i).name);
            commodityList1 = resultBeans.get(i).commodityList;
            LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context,LinearLayoutManager.VERTICAL,false);
            ((Item2ViewHolder) viewHolder).rv2.setLayoutManager(linearLayoutManager);
            twoListAdapter = new TwoAdapter(context,commodityList1);
            ((Item2ViewHolder) viewHolder).rv2.setAdapter(twoListAdapter);
        }
        if(viewHolder instanceof  Item3ViewHolder)
        {
            ((Item3ViewHolder) viewHolder).mlss.setText(resultBeans.get(i).name);
            commodityList1 = resultBeans.get(i).commodityList;
            GridLayoutManager gridLayoutManager = new GridLayoutManager(context,2);
            gridLayoutManager.setOrientation(OrientationHelper.VERTICAL);
            ((Item3ViewHolder) viewHolder).rv3.setLayoutManager(gridLayoutManager);
            sanListAdapter = new ThreeAdapter(context,commodityList1);
            ((Item3ViewHolder) viewHolder).rv3.setAdapter(sanListAdapter);

        }
    }

    @Override
    public int getItemCount() {
        return resultBeans.size();
    }
    class Item1ViewHolder extends RecyclerView.ViewHolder {
        RecyclerView rv;
        TextView rxxp;

        public Item1ViewHolder(@NonNull View itemView) {
            super(itemView);
            rv = itemView.findViewById(R.id.rv);
            rxxp = itemView.findViewById(R.id.rxxptv);
        }
    }
    class Item2ViewHolder extends RecyclerView.ViewHolder {

        RecyclerView rv2;
        TextView pzsh;
        public Item2ViewHolder(@NonNull View itemView) {
            super(itemView);
            rv2 = itemView.findViewById(R.id.rv);
            pzsh = itemView.findViewById(R.id.pzshtv);
        }
    }
    class Item3ViewHolder extends RecyclerView.ViewHolder {
        RecyclerView rv3;
        TextView mlss;
        public Item3ViewHolder(@NonNull View itemView) {
            super(itemView);
            rv3 = itemView.findViewById(R.id.rv);
            mlss = itemView.findViewById(R.id.mlsstv);
        }
    }
}

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值