public class RetrofitUtils { private final Retrofit retrofit; private RetrofitUtils(){ HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(); httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); OkHttpClient client=new OkHttpClient.Builder() .addInterceptor(httpLoggingInterceptor) .build(); //建立retrofit对象 retrofit = new Retrofit.Builder() .baseUrl(Constant.baseUrl) .client(client)//实现retrofit和ok的关联 .addConverterFactory(GsonConverterFactory.create())//默认解析gson .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .build(); } //单例模式 public static RetrofitUtils INSTANCE; public static RetrofitUtils getInstance(){ if(INSTANCE==null){ synchronized(RetrofitUtils.class){ if(INSTANCE==null){ INSTANCE=new RetrofitUtils(); } } } return INSTANCE; } //创建方法,供调用 public RetrofitApi getApi(){ //获取接口 RetrofitApi retrofitApi=retrofit.create(RetrofitApi.class); return retrofitApi; }
}
public interface RetrofitApi { @GET("home/getHome") Observable<BaseResponseBean<HomeBean>> getData(); @GET("product/getCatagory") Observable<BaseResponseBean<FenLeiLeftBean>> getClassifyLeft(); @POST("product/getProductCatagory") @FormUrlEncoded Observable<BaseResponseBean<FenLeiRightBean>> getClassifyRight(); }
public class HomeModel extends BaseModel { private RetrofitUtils retrofitUtils; public void getData(final IHomeModel iHomeModel) { retrofitUtils = RetrofitUtils.getInstance(); retrofitUtils.getApi().getData() .subscribeOn(io.reactivex.schedulers.Schedulers.io()) .observeOn(io.reactivex.android.schedulers.AndroidSchedulers.mainThread()) .subscribe(new Observer<BaseResponseBean<HomeBean>>() { @Override public void onSubscribe(Disposable d) { Log.e("onSubscribe", d + ""); } @Override public void onNext(BaseResponseBean<HomeBean> homeBeanBaseResponseBean) { HomeBean data = homeBeanBaseResponseBean.data; iHomeModel.success(data); } @Override public void onError(Throwable e) { Log.e("onErrer", e + ""); } @Override public void onComplete() { } } ); } public interface IHomeModel { void success(HomeBean homeBean); } }
public class HomePresenter extends BasePresenter<HomeModel,IHomeView> { public void homeData(){ model.getData(new HomeModel.IHomeModel() { @Override public void success(HomeBean homeBean) { view.success(homeBean); } }); } }
public class Home extends BaseFragment<HomePresenter> implements IHomeView{ private RecyclerView home_rlv; @Override protected void initData() { presenter.homeData(); } @Override protected BaseModel initModel() { return new HomeModel(); } @Override protected HomePresenter initPresenter() { return new HomePresenter(); } @Override protected void initView(View view) { home_rlv = view.findViewById(R.id.home_rlv); } @Override protected int bindLayoutId() { return R.layout.fragment_home; } @Override public void showLoading() { } @Override public void hideLoading() { } @Override public void serverFail(String msg) { } @Override public void success(HomeBean homeBean) { HomeAdapter homeAdapter = new HomeAdapter(homeBean.getBanner(),homeBean.getFenlei(),homeBean.getMiaosha().getList(),homeBean.getTuijian().getList(),getActivity()); home_rlv.setLayoutManager(new GridLayoutManager(getActivity(),1, LinearLayoutManager.VERTICAL,false)); home_rlv.setAdapter(homeAdapter); } }
public interface IHomeView extends IBaseView { void success(HomeBean homeBean); }