Mvp使用

来源:互联网 发布:linux mmap使用 编辑:程序博客网 时间:2024/05/29 14:57

1.model接口

public interface Imodel {    void login(String aa);}



2.继承接口

public class Mmodel implements Imodel {    // 定义接口变量    private OnFinishLisenter lisenter;    //定义接口    public interface OnFinishLisenter{        void onFinish(List<Mysup.NewslistBean> userBean);    }    public void setOnFinishLisenter(OnFinishLisenter lisenter){        this.lisenter = lisenter;    }    private List<Mysup.NewslistBean> mys;    @Override    public void login(String aa) {        Retrofit retrofit = new Retrofit.Builder().baseUrl(Api.Home).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).build();        Apiser apiser = retrofit.create(Apiser.class);        Observable<Mysup> gethom = apiser.gethom();        gethom.subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(new Observer<Mysup>() {                    @Override                    public void onCompleted() {                    }                    @Override                    public void onError(Throwable e) {                    }                    @Override                    public void onNext(Mysup mysup) {                        lisenter.onFinish(mysup.getNewslist());                    }                });    }}


3.view定义接口
public interface Iview {    void onLoginSuccess(List<Mysup.NewslistBean> cc);    void onLoginFailed(String error);}



4.继承接口
public class Mview implements Iview {    @Override    public void onLoginSuccess(List<Mysup.NewslistBean> cc) {    }    @Override    public void onLoginFailed(String error) {    }}


5.p调用
public class Mpresenter implements  Mmodel.OnFinishLisenter {    private final Iview userView;    private final Mmodel userMode;    public Mpresenter(Iview userView) {        this.userView = userView;        this.userMode = new Mmodel();    }    public void login(final String aa){        userMode.setOnFinishLisenter(this);        userMode.login(aa);    }    @Override    public void onFinish(List<Mysup.NewslistBean> userBean) {        userView.onLoginSuccess(userBean);    }}


6.主方法继承使用

public class Zhifr extends Fragment implements Iview{       @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.zhifr, null);        mRecyclerView=view.findViewById(R.id.id_recyclerview);        userPresenter=new Mpresenter(this);        userPresenter.login("");        return view;    }    @Override    public void onLoginSuccess(List<Mysup.NewslistBean> cc) {          }    @Override    public void onLoginFailed(String error) {    }}

7.Api

public class Api {    public static final String Home="https://api.tianapi.com/wxnew/";}

8.Apiser

public interface Apiser {    @GET("?key=8d6e3228d25298f13af4fc40ce6c9679&num=20&page=1")    Observable<Mysup> gethom();}

9.依赖

 compile 'com.hjm:BottomTabBar:1.1.1'    compile 'com.android.support:design:23.4.0'    compile 'com.squareup.retrofit2:retrofit:2.0.1'    compile 'com.squareup.retrofit2:converter-gson:2.0.1'    compile 'com.squareup.retrofit2:adapter-rxjava:2.0.1'    compile 'io.reactivex:rxandroid:1.1.0'    compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'    compile 'com.android.support:mediarouter-v7:25.0.0'    compile 'com.android.support:appcompat-v7:25.0.0'    compile 'com.android.support:recyclerview-v7:25.0.0'    compile 'com.facebook.fresco:fresco:0.12.0'