先写一个接口类 写接口方法 用来请求数据
public interface MyCartApi {
@GET("product/getCarts")
Observable<MyCartListBean> getCartList(@Query("source") String source,@Query("uid") String uid);
@FormUrlEncoded
@POST("user/login")
Call<ResponseBody> login(@Field("mobile") String mobile, @Field("password") String password);
}
写工具类
public class RxJavaUtils {
private final Retrofit mRetrofit;
public RxJavaUtils(String baseUrl) {
Log.e("TAG","RxJavaUtils===");
mRetrofit = new Retrofit.Builder()
.client(new OkHttpClient.Builder()
.connectTimeout(10000, TimeUnit.MILLISECONDS)
.build())
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
}
public <T> T creat(Class<T> clazz){
return mRetrofit.create(clazz);
}
}
写model层 用来请求网络数据public class CartModel implements IModel {
String baseUri = "http://120.27.23.105/";
public Observable getCartList(){
Log.e("TAG","getCartList"+"======");
MyCartApi creat = new RxJavaUtils(baseUri).creat(MyCartApi.class);
Observable<MyCartListBean> observable = creat.getCartList("android","2902");
return observable;
}
}
写View层传数据
public interface CartView extends IView{
void getCartSuccess(MyCartListBean bean);
void getCartFaild(Throwable e);
void getDelGoodsSuccess(DelCartGoods bean);
}
写Presenter层做数据操作
public abstract class IPresenter <T extends IView>{
T view;
public IPresenter (T view){
this.view = view;
init();
}
protected abstract void init();
}
public class CartPresenter extends IPresenter<CartView> {
CartModel mCartModel;
public CartPresenter(CartView view) {
super(view);
}
@Override
protected void init() {
mCartModel = new CartModel();
}
public void getCartListAction() {
Observable<MyCartListBean> cartList = mCartModel.getCartList();
cartList.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<MyCartListBean>() {
@Override
public void accept(MyCartListBean bean) throws Exception {
view.getCartSuccess(bean);
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
view.getCartFaild(throwable);
}
});
}
public void getDelGoods(String pid){
Observable<DelCartGoods> delGoods = mCartModel.getDelGoods(pid);
delGoods.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<DelCartGoods>() {
@Override
public void accept(DelCartGoods delCartGoods) throws Exception {
view.getDelGoodsSuccess(delCartGoods);
}
});
}
}