MVP+Retrofit get请求+Rxjava模板

implementation 'com.squareup.retrofit2:retrofit:2.3.0' //网络请求   Retrofit
implementation 'com.squareup.retrofit2:converter-gson:2.3.0' //网络请求所用Gson
implementation 'io.reactivex:rxjava:1.1.0' //Rxjava
implementation 'io.reactivex:rxandroid:1.1.0'

implementation 'com.squareup.retrofit2:adapter-rxjava:2.0.2'


model层建立一个接口,里面添加方法和内部接口:

void dataChangeListener(DataChangeListener listener);
interface  DataChangeListener{
    void dataChnage(List<MyBean.ResultBean.DataBean> data);
}


再定一个名为APIService的外部接口,里面放请求方式的注解,括号里写拼接的字符串后段:

@GET("test/test2.txt")
Observable<MyBean> observable();


接着新建一个类继承model的接口,然后实现接口里定义的方法:

Retrofit retrofit = new Retrofit.Builder()
        .addConverterFactory(GsonConverterFactory.create())
        .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
        .baseUrl("http://172.16.53.24:8080/")
        .build();
APIService apiService = retrofit.create(APIService.class);
apiService.observable()
        .observeOn(AndroidSchedulers.mainThread())
        .subscribeOn(Schedulers.io())
        .subscribe(new Action1<MyBean>() {
    @Override
    public void call(MyBean myBean) {
        List<MyBean.ResultBean.DataBean> data = myBean.getResult().getData();
        listener.dataChnage(data);
    }
});
 
 

在presenter层定义接口,在里面定义方法:

void getNetWork();
 
 

在view层定义接口:

void getNetWork(List<MyBean.ResultBean.DataBean> data);
 
 

然后在presenter层实现类里继承presenter层的接口,继承他的方法:

IView view;
private final ModelIMPL modelIMPL;

public PresenterImpl(IView view) {
    this.view = view;
    modelIMPL = new ModelIMPL();
}

@Override
public void getNetWork() {
    modelIMPL.dataChangeListener(new IModel.DataChangeListener() {
        @Override
        public void dataChnage(List<MyBean.ResultBean.DataBean> data) {
            view.getNetWork(data);
        }
    });
}


这样就把请求的数据传输到了view层了,activity里实现一下view层的接口然后重写view层接口里的方法就可以获取到数据啦:

PresenterImpl presenter = new PresenterImpl(this);
presenter.getNetWork();

这个是建立view层和presenter层的连接,他 .get 的方法是model层传到presenter里的数据,这样就可以传到view层了。

然后就可以在view层获取到数据进行下一步操作了。

猜你喜欢

转载自blog.csdn.net/qq_41832319/article/details/80793727
今日推荐