京东 分类(1)

 compile 'com.github.bumptech.glide:glide:3.6.1'
    implementation 'com.google.code.gson:gson:2.2.4'//Gson依赖
    implementation 'com.squareup.okhttp3:okhttp:3.0.0'//Okhttp依赖
    implementation 'com.android.support:recyclerview-v7:26.+'//Recyclerview依赖


权限:

 <uses-permission android:name="android.permission.INTERNET" />


1主要是bean,mvp,ok


Constans

public class Constans {

    public final static String HOST = "https://www.zhaoapi.cn/product";
    public final static String GETCATAGORY = "/getCatagory";
    public final static String GETPRODUCTCATAGORY = "/getProductCatagory";
    public final static String GETPRODUCTS = "/getProducts";
    public final static String GETPRODUCTDETAIL = "/getProductDetail";

}


Bean

ClassifyBean
public class ClassifyBean {

    private String msg;
    private String code;
    private List<DataBean> data;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {


        private int cid;
        private String createtime;
        private String icon;
        private int ishome;
        private String name;

        public int getCid() {
            return cid;
        }

        public void setCid(int cid) {
            this.cid = cid;
        }

        public String getCreatetime() {
            return createtime;
        }

        public void setCreatetime(String createtime) {
            this.createtime = createtime;
        }

        public String getIcon() {
            return icon;
        }

        public void setIcon(String icon) {
            this.icon = icon;
        }

        public int getIshome() {
            return ishome;
        }

        public void setIshome(int ishome) {
            this.ishome = ishome;
        }

        public String getName() {
            return name;
        }

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

ProductCatagoryBean

public class ProductCatagoryBean {

    private String msg;
    private String code;
    private List<DataBean> data;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {


        private String cid;
        private String name;
        private String pcid;
        private List<ListBean> list;

        public String getCid() {
            return cid;
        }

        public void setCid(String cid) {
            this.cid = cid;
        }

        public String getName() {
            return name;
        }

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

        public String getPcid() {
            return pcid;
        }

        public void setPcid(String pcid) {
            this.pcid = pcid;
        }

        public List<ListBean> getList() {
            return list;
        }

        public void setList(List<ListBean> list) {
            this.list = list;
        }

        public static class ListBean {
            /**
             * icon : http://120.27.23.105/images/icon.png
             * name : 月饼
             * pcid : 1
             * pscid : 1
             */

            private String icon;
            private String name;
            private int pcid;
            private int pscid;

            public String getIcon() {
                return icon;
            }

            public void setIcon(String icon) {
                this.icon = icon;
            }

            public String getName() {
                return name;
            }

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

            public int getPcid() {
                return pcid;
            }

            public void setPcid(int pcid) {
                this.pcid = pcid;
            }

            public int getPscid() {
                return pscid;
            }

            public void setPscid(int pscid) {
                this.pscid = pscid;
            }
        }
    }
}


ProductsBean

 
 
public class ProductsBean {
    private String msg;
    private String code;
    private String page;
    private List<DataBean> data;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getPage() {
        return page;
    }

    public void setPage(String page) {
        this.page = page;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {


        private double bargainPrice;
        private String createtime;
        private String detailUrl;
        private String images;
        private int itemtype;
        private int pid;
        private double price;
        private int pscid;
        private int salenum;
        private int sellerid;
        private String subhead;
        private String title;

        public double getBargainPrice() {
            return bargainPrice;
        }

        public void setBargainPrice(double bargainPrice) {
            this.bargainPrice = bargainPrice;
        }

        public String getCreatetime() {
            return createtime;
        }

        public void setCreatetime(String createtime) {
            this.createtime = createtime;
        }

        public String getDetailUrl() {
            return detailUrl;
        }

        public void setDetailUrl(String detailUrl) {
            this.detailUrl = detailUrl;
        }

        public String getImages() {
            return images;
        }

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

        public int getItemtype() {
            return itemtype;
        }

        public void setItemtype(int itemtype) {
            this.itemtype = itemtype;
        }

        public int getPid() {
            return pid;
        }

        public void setPid(int pid) {
            this.pid = pid;
        }

        public double getPrice() {
            return price;
        }

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

        public int getPscid() {
            return pscid;
        }

        public void setPscid(int pscid) {
            this.pscid = pscid;
        }

        public int getSalenum() {
            return salenum;
        }

        public void setSalenum(int salenum) {
            this.salenum = salenum;
        }

        public int getSellerid() {
            return sellerid;
        }

        public void setSellerid(int sellerid) {
            this.sellerid = sellerid;
        }

        public String getSubhead() {
            return subhead;
        }

        public void setSubhead(String subhead) {
            this.subhead = subhead;
        }

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }
    }
}
IMain
public interface IMain {
    void showGoods(List<ClassifyBean.DataBean> data);

    void showError(String message);

}

IMainProduct
 
 
public interface IMainProduct {

    void getProductSuccess(List<ProductCatagoryBean.DataBean> data);
    void getProductFailed(String message);
}

 
 
IMoudle
public interface IMoudle {
    void getJson(String path, IParesenter iParesenter);
}

IParesenter
public interface IParesenter {

    void getData(String url);

    void showData(String result);
    void showError(String error);

    void destory();
}

IProducts

public interface IProducts {
    void getSuccess(List<ProductsBean.DataBean> data);
    void getFailed(String message);

}


ClassyParesenter
public class ClassyParesenter implements IParesenter {

    private IMoudle iMoudle;
    private IMain iMain;

    public ClassyParesenter(IMain iMain){
        iMoudle = new OkMoudle();
        this.iMain = iMain;
    }

    @Override
    public void getData(String url) {
        iMoudle.getJson(url,this);
    }

    @Override
    public void showData(String result) {
        Gson gson = new Gson();
        ClassifyBean classifyBean = gson.fromJson(result, ClassifyBean.class);
        String code = classifyBean.getCode();
        if (code.equals("0")){
            List<ClassifyBean.DataBean> data = classifyBean.getData();
            iMain.showGoods(data);
        }else {
            iMain.showError(classifyBean.getMsg());
        }
    }

    @Override
    public void showError(String error) {
        iMain.showError("网络请求错误" + error);
    }

    @Override
    public void destory() {
        if (iMain != null){
            iMain = null;
        }
    }

}

OkMoudle

public class OkMoudle implements IMoudle {


    @Override
    public void getJson(String path, final IParesenter iParesenter) {
        final OkUtil okUtil = OkUtil.getInstance();

        okUtil.doGet(path, new OkUtilListener() {
            @Override
            public void getFailed(String message) {
                iParesenter.showError(message);
            }

            @Override
            public void getSuccess(String result) {
                iParesenter.showData(result);
            }
        });

    }
}

ProductCatagoryParesenter
public class ProductCatagoryParesenter implements IParesenter {

    private IMoudle iMoudle;
    private IMainProduct iMainProduct;

    public ProductCatagoryParesenter(IMainProduct iMainProduct) {
        iMoudle = new OkMoudle();
        this.iMainProduct = iMainProduct;
    }

    @Override
    public void getData(String url) {
        iMoudle.getJson(url,this);
    }

    @Override
    public void showData(String result) {
        Gson gson = new Gson();
        ProductCatagoryBean catagoryBean = gson.fromJson(result, ProductCatagoryBean.class);
        List<ProductCatagoryBean.DataBean> data = catagoryBean.getData();
        iMainProduct.getProductSuccess(data);
    }

    @Override
    public void showError(String error) {
        iMainProduct.getProductFailed(error);
    }

    @Override
    public void destory() {
        if (iMainProduct != null){
            iMainProduct = null;
        }
    }
}

ProductsPresenter
public class ProductsPresenter implements IParesenter {

    private IMoudle iMoudle;
    private IProducts iProducts;

    public ProductsPresenter(IProducts iProducts) {
        iMoudle = new OkMoudle();
        this.iProducts = iProducts;
    }

    @Override
    public void getData(String url) {
        iMoudle.getJson(url,this);
    }

    @Override
    public void showData(String result) {
        Gson gson = new Gson();
        ProductsBean productsBean = gson.fromJson(result, ProductsBean.class);
        if (productsBean.getCode().equals("0")){
            iProducts.getSuccess(productsBean.getData());
        }else {
            iProducts.getFailed(productsBean.getMsg());
        }
    }

    @Override
    public void showError(String error) {
        iProducts.getFailed(error);
    }

    @Override
    public void destory() {
        if (iProducts != null){
            iProducts = null;
        }
    }

}

ok
OkUtilListener

public interface OkUtilListener {

    void getFailed(String message);

    void getSuccess(String result);

}


OkUtil

public class OkUtil {

    private static OkUtil okUtil = null;
    private Handler handler = new Handler();

    private OkUtil(){}

    public static OkUtil getInstance(){//单例模式  懒汉式
        if (okUtil == null){
            synchronized (OkUtil.class){//同步锁线程确保只有一个线程拥有这个对象
                if (okUtil == null){
                    okUtil = new OkUtil();
                }
            }
        }
        return okUtil;
    }

    private Interceptor interceptor = new Interceptor() {
        @Override
        public Response intercept(Chain chain) throws IOException {

            Request request = chain.request();
            String url = request.url().toString();
            if (url.contains("?")){
                url += "&source=android";
            }else {
                url += "?source=android";
            }

            Request build = request.newBuilder().get().url(url).build();
            Response proceed = chain.proceed(build);
            return proceed;
        }
    };

    /**
     * path: 路径
     * okUtilListener: 网络请求成功或失败的监听
     * 这个方法可以根据传来的参数进行网络请求
     * */
    public void doGet(String path, final OkUtilListener okUtilListener){

        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .addInterceptor(interceptor)
                .build();

        Request request = new Request.Builder()
                .url(path)
                .get()
                .build();

        Call call = okHttpClient.newCall(request);

        call.enqueue(new Callback() {//异步请求网络
            @Override
            public void onFailure(Call call, IOException e) {
                final String message = e.getMessage();
                handler.post(new Runnable() {//处理网络请求的数据放在主线程中
                    @Override
                    public void run() {
                        okUtilListener.getFailed(message);
                    }
                });
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                final String result = response.body().string();
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        okUtilListener.getSuccess(result);
                    }
                });
            }
        });

    }
}







猜你喜欢

转载自blog.csdn.net/qq_37454196/article/details/79442662