//Contract
package com.bwei.zonghe_1.di.conter; import com.bwei.zonghe_1.data.bean.WangBean; import com.bwei.zonghe_1.data.bean.ZongBean; /** * Created by 杨柳 on 2018/9/21. */ public interface HomeContractor { //一.1 public interface WangIView{ //一.2. void wangData(WangBean wangBean); //一.3. void onError(Throwable throwable); //一.4. void zongData(ZongBean zongBean); } //一.5 public interface WangIPresenter<WangIView>{ //一.6 void attachView(WangIView wangIView); //一.7 void detachView(WangIView wangIView); //一.8 void wangRequestData(); //一.9 void zongRequestData(); } //一.9 public interface WangIModel{ public interface WangListener{ //一.10 void wangCallBack(WangBean wangBean); //一.11 void onError(Throwable throwable); } //一.12 public interface ZongListener{ //一.13 void zongCallBack(ZongBean zongBean); } //一.14 void wangResponseData(WangListener wangListener); //一.15(去P层) void zongResponseData(ZongListener zongListener); } }
//Model
package com.bwei.zonghe_1.di.model; import android.annotation.SuppressLint; import com.bwei.zonghe_1.data.bean.WangBean; import com.bwei.zonghe_1.data.bean.ZongBean; import com.bwei.zonghe_1.data.service.Contast; import com.bwei.zonghe_1.data.utils.RetrofitUtil; import com.bwei.zonghe_1.di.conter.HomeContractor; import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.functions.Consumer; import io.reactivex.schedulers.Schedulers; /** * Created by 杨柳 on 2018/9/21. */ public class WangModel implements HomeContractor.WangIModel { //三.1 @SuppressLint("CheckResult") @Override public void wangResponseData(final WangListener wangListener) { //三.2 Observable<WangBean> observable = RetrofitUtil.getInstance().getapiService(Contast.WANG_BEAN).getWang(""); observable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<WangBean>() { @Override public void accept(WangBean wangBean) throws Exception { wangListener.wangCallBack(wangBean); } }, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception { wangListener.onError(throwable); } }); } @Override public void zongResponseData(final ZongListener zongListener) { //二.3 Observable<ZongBean> observable = RetrofitUtil.getInstance().getapiService(Contast.ZONG_BASE).getZong(""); observable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<ZongBean>() { @Override public void accept(ZongBean zongBean) throws Exception { zongListener.zongCallBack(zongBean); } }); } }
//Presenter
package com.bwei.zonghe_1.di.presenter; import android.content.AbstractThreadedSyncAdapter; import com.bwei.zonghe_1.data.bean.WangBean; import com.bwei.zonghe_1.data.bean.ZongBean; import com.bwei.zonghe_1.di.conter.HomeContractor; import com.bwei.zonghe_1.di.model.WangModel; import java.lang.ref.WeakReference; /** * Created by 杨柳 on 2018/9/21. */ //二.1(从一.15过来)(去建M层) public class WangPresenter implements HomeContractor.WangIPresenter<HomeContractor.WangIView> { //二.2 private WangModel wangModel; //二.3 HomeContractor.WangIView wangIView; private WeakReference<HomeContractor.WangIView> wangIViewWeakReference; private WeakReference<WangModel> wangModelWeakReference; @Override public void attachView(HomeContractor.WangIView wangIView) { //二.4 this.wangIView = wangIView; //二.5 wangModel = new WangModel(); //二.6 wangIViewWeakReference = new WeakReference<>(wangIView); //二.7 wangModelWeakReference = new WeakReference<>(wangModel); } @Override public void detachView(HomeContractor.WangIView wangIView) { //二.8 wangIViewWeakReference.clear(); //二.9 wangModelWeakReference.clear(); } @Override public void wangRequestData() { //二.10 wangModel.wangResponseData(new HomeContractor.WangIModel.WangListener() { @Override public void wangCallBack(WangBean wangBean) { //二.11 wangIView.wangData(wangBean); } @Override public void onError(Throwable throwable) { //二.12 wangIView.onError(throwable); } }); } @Override public void zongRequestData() { // 二.13 wangModel.zongResponseData(new HomeContractor.WangIModel.ZongListener() { @Override public void zongCallBack(ZongBean zongBean) { // 二.14(去M层) wangIView.zongData(zongBean); } }); } }