m层
public class HomeModel { //轮播图 public Observable<AdBean> carousel() { return RetrofitManager.getDefaule().create(JingDongApi.class).adByGet(); } }
p层
public class HomePresenter extends BasePresenter<HomeView> { private static final String TAG = "HomePresenter"; private HomeModel homeModel; public HomePresenter(HomeView view) { super(view); } @Override protected void initModel() { homeModel = new HomeModel(); } //轮播图 public void carousel() { homeModel.carousel() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<AdBean>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(AdBean adBean) { if (view != null) { Log.d(TAG, "onNext: " + adBean.getMsg()); view.onSuccess(adBean); } } @Override public void onError(Throwable e) { if (view != null) { view.onFaild(e.toString()); } } @Override public void onComplete() { } }); } }
RetrofitManager
public class RetrofitManager { private static final String BASE_URL= "https://www.zhaoapi.cn/"; private Retrofit retrofit; public RetrofitManager(String baseUrl) { retrofit= new Retrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .client(buildOkHttpClient()) .build(); } private OkHttpClient buildOkHttpClient() { return new OkHttpClient.Builder() .readTimeout(500, TimeUnit.SECONDS) .build(); } private static class SingHolder{ private static final RetrofitManager _INSTANT=new RetrofitManager(BASE_URL); } public static RetrofitManager getDefaule(){ return SingHolder._INSTANT; } public <T> T create(Class<T> Clazz) { return retrofit.create(Clazz); } }
Api
public interface JingDongApi { //轮播图 @GET("ad/getAd") Observable<AdBean> adByGet(); //商品分类接口(此接口用于首页九宫格,和底部页签分类页) @GET("product/getCatagory") Observable<ImageBean> hometypes(); @GET("product/getCatagory") Observable<CatagoryBean> clazz(); //fenlei @GET("product/getProductCatagory") Observable<ProductCatagoryBean> clazzitem(@Query("cid") int cid); //gouwuche @GET("product/getCarts") Observable<CartBean> cart(@Query("uid") int uid); //搜索 @GET("product/searchProducts") Observable<SearchBean> doSearch(@Query("keywords")String keywords,@Query("sort")int sort); //商品详情 @GET(" product/getProducts") Observable<ProductBean> doProduct(@Query("pscid")int pscid, @Query("sort")int sort); //详情 @GET("product/getProductDetail") Observable<ProductDetailsBean> product(@Query("pid")int pid); //分类详情 @GET("product/getProductDetail") Observable<XiangQingBean> xiangqing(@Query("pid")int pid); //添加购物车 @GET("product/addCart") Observable<AddCartBean> addCart(@Query("uid")int uid, @Query("pid")int pid); //删除购物车 @GET("product/deleteCart") Observable<CartRemoveBean> deleteCart(@Query("uid")String uid, @Query("pid")int pid); //登录 @GET("user/login") Observable<LoginBean> login(@Query("mobile")String mobile,@Query("password")String password); //注册 @GET("user/reg") Observable<RegBean> doReg(@Query("mobile")String mobile,@Query("password")String password); //发现 @GET() Observable<FuLiBean> mei(@Url String url); }
v层
public interface HomeView extends IView { void onSuccess(AdBean adBean); void onFaild(String error); void onHomeTypeSuccess(ImageBean imageBean); void onHomeTypeError(String error); void onProductSuccess(ProductDetailsBean productDetailsBean); void onProductFaild(String error); void onAddCart(AddCartBean addCartBean); void onAddCartFaild(String error); }