MVP的封装使用之Android

首先将mvp使用的接口全部定义

loadcontract

  public abstract class LoadPresenterIn{
        public abstract void LeftPresenter(HashMap<String,String> map);
        public abstract void RightPresenter(HashMap<String,String> map);
        public abstract void PubuPresenter(HashMap<String,String> map);
    }
    interface LoadModelIn{
        void LeftModel(HashMap<String,String> map, RequestCallBack callBack);
        void RightModel(HashMap<String,String> map, RequestCallBack callBack);
        void PubuModel(HashMap<String,String> map, RequestCallBack callBack);
    }
    interface LoadViewIn{
        void LeftOnSuccess(String result);
        void LeftOnFailUre(String msg);
        void RightOnSuccess(String result);
        void RightOnFailUre(String msg);
        void PubuOnSuccess(String result);
        void PubuFailUer(String msg);
    }

这里是M层
开启单例模式
get post请求

public class LoadModel implements LoadContract.LoadModelIn {

    private Handler handler = new Handler();
    private String key;
    private String value;
    @Override
    public void LeftModel(HashMap<String, String> map, final RequestCallBack callBack) {
        OkHttputil.getInstance().doGet(UtilApi.LEFT_API, new OkHttpCallBack() {
            @Override
            public void Success(final String result) {
                if (callBack!=null){
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            callBack.Success(result);
                        }
                    });
                }
            }

            @Override
            public void Failure(String msg) {
                if (callBack!=null){
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            callBack.Failure("网络请求失败");
                        }
                    });
                }
            }
        });
    }

    @Override
    public void RightModel(HashMap<String, String> map, final RequestCallBack callBack) {

        for (Map.Entry<String,String> map1:map.entrySet()){
            key=map1.getKey();
            value=map1.getValue();
        }
        String s = UtilApi.RIGHT_API+value;
        OkHttputil.getInstance().doGet(s, new OkHttpCallBack() {
            @Override
            public void Success(final String result) {
                if (callBack!=null){
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            callBack.Success(result);
                        }
                    });
                }
            }

            @Override
            public void Failure(final String msg) {
                if (callBack!=null){
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            callBack.Failure(msg);
                        }
                    });
                }
            }
        });
    }

    @Override
    public void PubuModel(HashMap<String, String> map, final RequestCallBack callBack) {
        OkHttputil.getInstance().doGet(UtilApi.PUBU_API, new OkHttpCallBack() {
            @Override
            public void Success(final String result) {
                if (callBack!= null){
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            callBack.Success(result);
                        }
                    });
                }
            }

            @Override
            public void Failure(final String msg) {
                if (callBack!= null){
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            callBack.Failure(msg);
                        }
                    });
                }
            }
        });
    }
}

这里是P层

public class LoadPresenter extends LoadContract.LoadPresenterIn {
    private LoadContract.LoadViewIn loadViewIn;
    private final LoadModel loadModel;

    public LoadPresenter(LoadContract.LoadViewIn loadViewIn) {
        this.loadViewIn = loadViewIn;
        loadModel = new LoadModel();
    }

    @Override
    public void LeftPresenter(final HashMap<String, String> map) {
        loadModel.LeftModel(map, new RequestCallBack() {
            @Override
            public void Success(String result) {
                if (loadViewIn!=null){
                    loadViewIn.LeftOnSuccess(result);
                }
            }

            @Override
            public void Failure(String msg) {
                if (loadViewIn!=null){
                    loadViewIn.LeftOnFailUre(msg);
                }
            }
        });
    }

    @Override
    public void RightPresenter(HashMap<String, String> map) {

        loadModel.RightModel(map, new RequestCallBack() {
            @Override
            public void Success(String result) {
                if (loadViewIn!=null){
                    loadViewIn.RightOnSuccess(result);
                }
            }

            @Override
            public void Failure(String msg) {
                if (loadViewIn!=null){
                    loadViewIn.RightOnFailUre(msg);
                }
            }
        });
    }

    @Override
    public void PubuPresenter(HashMap<String, String> map) {

        loadModel.PubuModel(map, new RequestCallBack() {
            @Override
            public void Success(String result) {
                if (loadViewIn!=null){
                    loadViewIn.PubuOnSuccess(result);
                }
            }

            @Override
            public void Failure(String msg) {
                if (loadViewIn!=null){
                    loadViewIn.PubuFailUer(msg);
                }
            }
        });
    }
}

这是v层

		loadPresenter = new LoadPresenter(this);
        l_rv.setLayoutManager(new LinearLayoutManager(getActivity()));
        leftAdapter = new LeftAdapter(getActivity());
        loadPresenter.LeftPresenter(new HashMap<String, String>());

        r_rv.setLayoutManager(new GridLayoutManager(getActivity(),2));
        rightAdapter = new RightAdapter(getActivity());
        HashMap<String, String> map = new HashMap<>();
        map.put("keyword", "女鞋");
        loadPresenter.RightPresenter(map);
        r_rv.setAdapter(rightAdapter);

猜你喜欢

转载自blog.csdn.net/qq_42828557/article/details/88343359