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: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层获取到数据进行下一步操作了。