所需依赖:
compile 'com.facebook.fresco:fresco:1.5.0' compile 'com.squareup.okhttp3:okhttp:3.9.0' compile 'com.squareup.okhttp3:logging-interceptor:3.9.0' compile 'com.squareup.retrofit2:retrofit:2.0.2' compile 'com.squareup.retrofit2:converter-gson:2.0.2' compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' compile 'com.youth.banner:banner:1.4.10' compile 'com.github.bumptech.glide:glide:3.7.0' compile 'io.reactivex:rxandroid:1.0.1' compile 'org.greenrobot:eventbus:3.1.1' compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'Api:
public class Api { public static final String HOST = "https://www.zhaoapi.cn/"; //详情 public static final String FOR = "product/getProductDetail"; //添加购物车 public static final String ONE = "product/addCart"; //查询购物车 public static final String TWO = "product/getCarts"; //删除购物车 public static final String THREE = "product/deleteCart"; }OnNetLisenter:
public interface OnNetListener<T> { public void onSuccess(T t); public void onFailure(Exception e); }RetrofitHelper:
public class RetrofitHelper { private static OkHttpClient client; private static ServerApi serverApi; static { getClient(); } public static OkHttpClient getClient() { if (client == null) { synchronized (OkHttpClient.class){ if (client == null){ HttpLoggingInterceptor logging = new HttpLoggingInterceptor(); logging.getLevel(); client = new OkHttpClient.Builder() .addInterceptor(logging) .build(); } } } return client; } public static ServerApi getServerApi() { if (serverApi == null) { synchronized (ServerApi.class){ if (serverApi == null){ serverApi = onCreate(ServerApi.class,Api.HOST); } } } return serverApi; } public static <T> T onCreate(Class<T> tClass, String url){ Retrofit retrofit = new Retrofit.Builder() .baseUrl(url) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); return retrofit.create(tClass); } }ServerApi:
public interface ServerApi { @GET(Api.ONE) Observable<AddCartBean> addCart(@Query("uid") int uid, @Query("pid") int pid, @Query("source") String str);//添加购物车 @GET(Api.TWO) Observable<CartBean> cart(@Query("uid") int uid, @Query("source") String str);//查询购物车 @GET(Api.THREE) Observable<BaseBean> deleteGoodCar(@Query("uid") String uid, @Query("pid") String pid);//删除购物车 @GET(Api.FOR) Observable<XQbean> xq(@Query("pid") int pid, @Query("source") String str);//购物车详情 }GoodModel:
public class GoodModel implements IGoodModel { @Override public void getCard(int uid, String str, final OnNetListener<CartBean> onNetListener) { ServerApi serverApi = RetrofitHelper.getServerApi(); serverApi.cart(uid, str) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<CartBean>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { e.getMessage(); onNetListener.onFailure((Exception) e); } @Override public void onNext(CartBean cartBean) { onNetListener.onSuccess(cartBean); } }); } }IGoodModel:
public interface IGoodModel { public void getCard(int uid, String str, OnNetListener<CartBean> onNetListener); }XQmodel:
public class XQmodel implements IXQmodel { @Override public void getXQ(int pid, String str, final OnNetListener<XQbean> onNetListener) { ServerApi serverApi = RetrofitHelper.getServerApi(); serverApi.xq(pid,str) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<XQbean>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { e.getMessage(); onNetListener.onFailure((Exception) e); } @Override public void onNext(XQbean xQbean) { onNetListener.onSuccess(xQbean); } }); } public void getTJ(int uid, int pid, String str, final OnNetListener<AddCartBean> onNetListener){ ServerApi serverApi = RetrofitHelper.getServerApi(); serverApi.addCart(uid,pid,str) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<AddCartBean>() { @Override public void onCompleted() { } @Override public void onError(Throwable throwable) { throwable.getMessage(); onNetListener.onFailure((Exception) throwable); } @Override public void onNext(AddCartBean addCartBean) { onNetListener.onSuccess(addCartBean); } }); } }IXQmodel:
public interface IXQmodel { public void getXQ(int pid, String str, final OnNetListener<XQbean> onNetListener); }GoodPresenter:
public class GoodPresenter { private IGoodActivity iGoodActivity; private IGoodModel iGoodModel; public GoodPresenter(IGoodActivity iGoodActivity) { this.iGoodActivity = iGoodActivity; iGoodModel = new GoodModel(); } public void getCarts() { iGoodModel.getCard(71, "android", new OnNetListener<CartBean>() { @Override public void onSuccess(CartBean cartBean) { iGoodActivity.onShow(cartBean); } @Override public void onFailure(Exception e) { e.getMessage(); } }); } }IGoodActivity:
public interface IGoodActivity { public void onShow(CartBean cartBean); }
public interface IMainActivity<T> { void showBean(T t); void showStr(String s); }XQpresenter:
public class XQpresenter { private XQmodel xQmodel; private IMainActivity iMainActivity; public XQpresenter(IMainActivity iMainActivity) { this.iMainActivity = iMainActivity; xQmodel = new XQmodel(); } public void getXQ(){ xQmodel.getXQ(71, "android", new OnNetListener<XQbean>() { @Override public void onSuccess(XQbean xQbean) { iMainActivity.showBean(xQbean); } @Override public void onFailure(Exception e) { } }); } public void getTJ() { xQmodel.getTJ(3043, 12, "android", new OnNetListener<AddCartBean>() { @Override public void onSuccess(AddCartBean addCartBean) { iMainActivity.showStr(addCartBean.getMsg()); } @Override public void onFailure(Exception e) { } }); } }MainActivity:
public class MainActivity extends AppCompatActivity implements View.OnClickListener, IMainActivity { private SimpleDraweeView mXqsdv1; private TextView mTvtitle1; /** * 跳转到购物车 */ private Button mTiaozhuan1; /** * 添加到购物车 */ private Button mTianjia1; private XQpresenter xQpresenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView();