首先导入依赖
//retrofit依赖网络请求
compile 'com.squareup.retrofit2:retrofit:+' compile 'com.squareup.retrofit2:converter-gson:+' compile 'io.reactivex.rxjava2:rxjava:+' compile 'io.reactivex.rxjava2:rxandroid:+' compile 'com.squareup.retrofit2:adapter-rxjava2:+'
APIpublic interface LoginApi { //http://120.27.23.105/product/deleteCart?uid=2561&pid=1 @GET( "product/deleteCart") Observable<DeleteShopBean> getDelete( @Query( "uid") String uid, @Query( "pid") String pid);}
Utils类
public class MyUtils { public static final String BASE_URL = "http://120.27.23.105/"; private final Retrofit mRetrofit; public static class SINGLE_HOLDER { public static final MyUtils INSTANCE = new MyUtils(BASE_URL); } public static MyUtils getInstance() { return SINGLE_HOLDER.INSTANCE; } private MyUtils(String baseUrl) { mRetrofit = buildRetrofit(); } private OkHttpClient buildOkHttpClient() { return new OkHttpClient.Builder() .connectTimeout(10000, TimeUnit.MILLISECONDS) .build(); } private Retrofit buildRetrofit() { return new Retrofit.Builder() .client(buildOkHttpClient()) .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .build(); } public <T> T create(Class<T> clazz) { return mRetrofit.create(clazz); } }
view层
public interface ShopDeleteView extends IDeleteView { void loginSuccess (DeleteShopBean loginBean); void loginFaild(Throwable e);}
public interface IDingView {
}
Model层
public class ShopModel { public Observable<DeleteShopBean> login(String uid,String pid) { LoginApi logi = MyUtils.getInstance().create(LoginApi.class); Observable<DeleteShopBean> login = logi.getDelete(uid, pid); return login; } }presenter层
public abstract class IDeletePresenter<T extends IDeleteView> { protected T view; public IDeletePresenter(T view) { this.view = view; //用来创建modle init(); } protected abstract void init(); }
public class MyDeletePresenter extends IDeletePresenter<ShopDeleteView> { private ShopModel shopModel; public MyDeletePresenter(ShopDeleteView view) { super(view); } @Override protected void init() { shopModel = new ShopModel(); } public void delete(String uid,String pid){ Observable<DeleteShopBean> login = shopModel.login(uid, pid); login//需要在io子线程联网 .subscribeOn(Schedulers.io()) //需要在主线程更新UI .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<DeleteShopBean>() { @Override public void accept(DeleteShopBean deleteShopBean) throws Exception { view.loginSuccess(deleteShopBean); } } , new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception { view.loginFaild(throwable); } } ); } } presenter的另一种写法
public class TabPresenter extends IPresenter<TabView> { private TabModel shopModel; public TabPresenter(TabView view) { super(view); } @Override protected void init() { shopModel = new TabModel(); } public void delete(String uid,String pid){ Observable<TabBean> login = shopModel.login(uid, pid); login//需要在io子线程联网 .subscribeOn(Schedulers.io()) //需要在主线程更新UI .observeOn(AndroidSchedulers.mainThread())//subscribe .subscribe(new Observer<TabBean>() { @Override public void onCompleted() { Log.d("xxx", "onCompleted: "+"onCompleted"); } @Override public void onError(Throwable e) { view.onTabFailed(e); } @Override public void onNext(TabBean tabBean) { view.onTabSuccess(tabBean); } }); }
Main层调用
public class ShoppingFragment extends Fragment implements ShopDeleteView//初始化
myDeletePresenter = new MyDeletePresenter(ShoppingFragment.this);//调用
myDeletePresenter.delete(uid+"",id);