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); } }); } }); } }