/--------依赖------------/
//Recycleview依赖 compile 'com.android.support:recyclerview-v7:26.0.0-alpha1' compile 'com.jcodecraeer:xrecyclerview:1.3.2' //GSON依赖 compile 'com.google.code.gson:gson:2.2.4' //butterknife(黄油刀) compile 'com.jakewharton:butterknife:8.8.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' //SimpleDraweeView加载图片的依赖: compile 'com.facebook.fresco:fresco:1.5.0' //rxjava compile 'io.reactivex:rxjava:1.1.6' compile 'io.reactivex:rxandroid:1.2.1' //retrofit2 compile 'com.squareup.retrofit2:retrofit:2.3.0' compile 'com.squareup.retrofit2:converter-gson:2.3.0' compile 'com.squareup.retrofit2:adapter-rxjava:2.3.0' //glide依赖包 compile 'com.github.bumptech.glide:glide:3.7.0'/----------权限---------------/
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
工具包
public class HttpConfig { //https://www.zhaoapi.cn/product/getProducts //当前子分类下的商品列表(分页) public static String base_url="http://120.27.23.105/"; }
接口Service
public interface MyService { //登录 @FormUrlEncoded @POST("user/login") Observable<LoginUserBean> loginpost(@FieldMap Map<String,String> map); //注册 @FormUrlEncoded @POST("user/reg") Observable<RegBean> regpost(@FieldMap Map<String,String> map); //获取商品列表 @GET("product/getProducts") Observable<GoodsBean> getGoodsListData(@Query("pscid") String pscid,@Query("page") String page); //添加购物车 //添加购物车 @GET("product/addCart") Observable<AddBean> addCart(@Query("uid") String uid, @Query("pid") String pid); }
网络请求工具包
public class RetrofitUtils { //单利模式 private static RetrofitUtils retrofitUtils; private final Retrofit retrofit; public static RetrofitUtils getRetrofitUtils(){ //判断 if(retrofitUtils==null){ retrofitUtils=new RetrofitUtils(); } return retrofitUtils; } public RetrofitUtils(){ retrofit=new Retrofit.Builder() .baseUrl(HttpConfig.base_url) .addConverterFactory(GsonConverterFactory.create(new Gson())) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); } public <T> T createRequest(Class<T> clz){ T t = retrofit.create(clz); return t; } }
M层
public interface IModel { //登录 void login(Map<String,String> map); //注册 void reg(Map<String,String> map); //获取商品列表 void getGoodsListData(String pscid,String page); void getGoodsListFresh(String pscid,String page); void getGoodsListLoadMore(String pscid,String page); //添加购物车 void addCart(String uid, String pid); //购物车 }
P层 接口
public interface IPresenter { //登录 void loginPresenter(IModel iModel, IView iView); //接收参数 void getLogin(LoginUserBean loginUserBean); //接收失败的提示 void getErrorData(String msg); //注册 void regPresenter(IModel iModel, IRegView iRegView); //接收参数 void getReg(RegBean regBean); //接收失败的提示 void getRegErrorData(String msg); //--------------商品列表---------------- //得到商品列表数据 //关联M和V层 void getGoodsList(IModel iModel,IGoodsView iGoodsView); void getGoodsListFresh(IModel iModel,IGoodsView iGoodsView); void getGoodsListLoadMore(IModel iModel,IGoodsView iGoodsView); //展示列表数据 void getGoodsListData(List<GoodsBean.DataBean> list); void getGoodsListFresh(List<GoodsBean.DataBean> list); void getGoodsListLoadMore(List<GoodsBean.DataBean> list); //错误提示 void getGoodsListError(String error); //-----------添加购物车 void addCart(IModel iModel, IDetailView iDetailView); void addSuccess(); void addError(); }
V层 接口
public interface IView { //登录成功 void loginSuccess(); //登录失败 void loginError(String error); //获取手机号 String getMobile(); //获取密码 String getPassword(); }实体类
public class ModelImp1 implements IModel{ private static final String TAG = "ModelImp1---"; //关联p层 private IPresenter iPresenter; public ModelImp1(IPresenter iPresenter) { this.iPresenter = iPresenter; } //登录 @Override public void login(Map<String, String> map) { //使用retrofit RetrofitUtils retrofitUtils = RetrofitUtils.getRetrofitUtils(); MyService myService = retrofitUtils.createRequest(MyService.class); myService.loginpost(map) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<LoginUserBean>() { @Override public void onCompleted() { Log.d(TAG, "onCompleted: 完成-----"); } @Override public void onError(Throwable e) { Log.d(TAG, "onError: 异常-----"+e.getMessage()); //调用p层的错误提示方法 iPresenter.getErrorData(e.getMessage()); } @Override public void onNext(LoginUserBean loginUserBean) { //把值传给p层 Log.d(TAG, "onNext: "+loginUserBean); //判断 if(loginUserBean.getCode().equals("0")){ iPresenter.getLogin(loginUserBean); }else{ iPresenter.getErrorData("请先注册---"); } } }); } //注册 @Override public void reg(Map<String, String> map) { RetrofitUtils retrofitUtils = RetrofitUtils.getRetrofitUtils(); MyService myService = retrofitUtils.createRequest(MyService.class); myService.regpost(map) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<RegBean>() { @Override public void onCompleted() { Log.d(TAG, "onCompleted: 注册完成----"); } @Override public void onError(Throwable e) { Log.d(TAG, "onError: 异常---"+e.getMessage()); iPresenter.getRegErrorData("注册失败--"); } @Override public void onNext(RegBean regBean) { Log.d(TAG, "onNext: "+regBean); //判断 if(regBean.getCode().equals("0")){ iPresenter.getReg(regBean); }else{ iPresenter.getRegErrorData("注册失败"); } } }); } //----------------商品列表页面------------------ @Override public void getGoodsListData(String pscid, String page) { //retrofit网络请求 RetrofitUtils retrofitUtils = RetrofitUtils.getRetrofitUtils(); MyService myService = retrofitUtils.createRequest(MyService.class); myService.getGoodsListData(pscid, page) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<GoodsBean>() { @Override public void onCompleted() { Log.d(TAG, "onCompleted: 商品列表完成----"); } @Override public void onError(Throwable e) { Log.d(TAG, "onError: 异常------"+e); } @Override public void onNext(GoodsBean goodsBean) { String code = goodsBean.getCode(); Log.d("test",code + "==============="); if(code.equals("0")){ iPresenter.getGoodsListData(goodsBean.getData()); }else{ Log.d(TAG, "onNext: "+goodsBean); } } }); } @Override public void getGoodsListFresh(String pscid, String page) { //retrofit网络请求 RetrofitUtils retrofitUtils = RetrofitUtils.getRetrofitUtils(); MyService myService = retrofitUtils.createRequest(MyService.class); myService.getGoodsListData(pscid, page) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<GoodsBean>() { @Override public void onCompleted() { Log.d(TAG, "onCompleted: 商品列表完成----"); } @Override public void onError(Throwable e) { Log.d(TAG, "onError: 异常------"+e); } @Override public void onNext(GoodsBean goodsBean) { String code = goodsBean.getCode(); if(code.equals("0")){ iPresenter.getGoodsListData(goodsBean.getData()); }else{ Log.d(TAG, "onNext: "+goodsBean); } } }); } @Override public void getGoodsListLoadMore(String pscid, String page) { //retrofit网络请求 RetrofitUtils retrofitUtils = RetrofitUtils.getRetrofitUtils(); MyService myService = retrofitUtils.createRequest(MyService.class); myService.getGoodsListData(pscid, page) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<GoodsBean>() { @Override public void onCompleted() { Log.d(TAG, "onCompleted: 商品列表完成----"); } @Override public void onError(Throwable e) { Log.d(TAG, "onError: 异常------"+e); } @Override public void onNext(GoodsBean goodsBean) { String code = goodsBean.getCode(); if(code.equals("0")){ iPresenter.getGoodsListData(goodsBean.getData()); }else{ Log.d(TAG, "onNext: "+goodsBean); } } }); } //添加购物车 @Override public void addCart(String uid, String pid) { RetrofitUtils retrofitUtils = RetrofitUtils.getRetrofitUtils(); MyService myService = retrofitUtils.createRequest(MyService.class); myService.addCart(uid,pid) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<AddBean>() { @Override public void onCompleted() { Log.d(TAG, "tainjai--- "); } @Override public void onError(Throwable e) { Log.d(TAG, "tainjai失败---: "); iPresenter.addError(); } @Override public void onNext(AddBean addBean) { Log.d(TAG, "addBean: "+addBean); if (addBean.getCode().equals("0")){ iPresenter.addSuccess(); }else { iPresenter.addError(); } } }); } }P 实体类
public class PresenterImp1 implements IPresenter{ //关联V层 private IView iView; private IRegView iRegView; private IGoodsView iGoodsView; private IDetailView iDetailView; private static final String TAG = "PresenterImp1==="; @Override public void loginPresenter(IModel iModel, IView iView) {