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