0,首先创建一个接口
public interface ApiServer {
String URL="https://gitee.com/Haoxueren/";
@GET("server/raw/master/columns/final_exam_02.json")
Observable<MyJson> getData();
}
1,定义一个view层的接口(一个成功的,一个失败的)
public interface MainView {
void onSussful(MyJson myJson);
void onFalied(String name);
}
2,创建一个model层,创建一个接口
public interface onClick{
void onOk(MyJson myJson);
void onNo(String name);
}
3,创建P层,实现model层的接口
import com.example.lenovo.kao02_zm0814_1.beans.MyJson;
/**
* Created by Lenovo on 2019/8/14.
*/
public class MainPresenter implements MainModel.Myonclick{
private MainView mainView;
private final MainModel mainModel;
public MainPresenter(MainView mainView) {
this.mainView = mainView;
mainModel = new MainModel();
}
public void request(){
mainModel.request(this);
}
@Override
public void OnCheng(MyJson myJson) {
mainView.OnSuccful(myJson);
}
@Override
public void onBai(String bai) {
mainView.onFalied(bai);
}
}
4,在实现的两个方法中,分别调用view层成功和失败的方法
5,创建view的成员方法
public MainView mainView;
private final MainModel mainModel1;
public MainPresenter(MainView mainView) {
this.mainView = mainView;
mainModel1 = new MainModel();
}
6,创建一个方法,并在model层实现这个方法
public void addData(){
mainModel1.addData(this);
}
7,接口改成本类的接口,并在该方法内进行网络数据的解析
public class MainModel {
public void request(final Myonclick myonclick) {
Retrofit build = new Retrofit.Builder()
.baseUrl(ApiServer.URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
build.create(ApiServer.class)
.getData()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<MyJson>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(MyJson myJson) {
myonclick.OnCheng(myJson);
}
@Override
public void onError(Throwable e) {
myonclick.onBai(e.getMessage());
}
@Override
public void onComplete() {
}
});
}
public interface Myonclick {
void OnCheng(MyJson myJson);
void onBai(String bai);
}
}
8,在Activity中创建并实现
presenter = new MainPresenter(this);
presenter.addData();
只是个人理解
网友评论