Mvp官方示例

94 阅读1分钟

##一、描述

此文章介绍官方的MVP示例 方便的MVP开源库框架:Moxy

##二、使用说明
首先创建两个接口基础类:

public interface BaseView<T> {
    void setPresenter(T t);
}
public interface BasePresenter {
    void start();
}

接着当一个页面需要P层时,开始创建一个ConStact契约类,此契约类就是统一定义这个模块的P和V的所有方法。

public interface WeixinHotConstact {

    interface View extends BaseView<Presenter> {
        void onRequestSuccess(List<NewListResponse.NewList> newListResponses);
        void onRequestFail(String error);
        void onRequestStart();
    }

    interface Presenter extends BasePresenter {
        void loadWeixinHotList(String num, String rand, String word, String page, String src);
    }
}

View层:

/**
 * 描述:微信热点
 * 作者:卜俊文
 * 创建:2016/11/14 10:49
 * 邮箱:344176791@qq.com
 */
public class WeiXinHotFragment extends Fragment implements WeixinHotConstact.View {


    private WeixinHotConstact.Presenter presenter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // TODO: inflate a fragment view
        View rootView = super.onCreateView(inflater, container, savedInstanceState);
        new WeixinHotPresenter(this); //此处就把自身赋值到P层了
        return rootView;
    }

    @Override
    public void setPresenter(WeixinHotConstact.Presenter presenter) {
        this.presenter = presenter;
    }

    /**
     * 描述:请求成功
     * 作者:卜俊文
     * 邮箱:344176791@qq.com
     * 创建时间: 2016/11/16 8:36
     */
    @Override
    public void onRequestSuccess(List<NewListResponse.NewList> newListResponses) {
    }

    /**
     * 描述:请求失败
     * 作者:卜俊文
     * 邮箱:344176791@qq.com
     * 创建时间: 2016/11/16 8:36
     */
    @Override
    public void onRequestFail(String error) {

    }

    /**
     * 描述:开始请求
     * 作者:卜俊文
     * 邮箱:344176791@qq.com
     * 创建时间: 2016/11/16 16:24
     */
    @Override
    public void onRequestStart() {
        Toast.makeText(getActivity().getApplicationContext(), "开始请求", Toast.LENGTH_SHORT).show();
    }

}

Presenter :

public class WeixinHotPresenter implements WeixinHotConstact.Presenter {

    private WeixinHotConstact.View view;

    public WeixinHotPresenter(WeixinHotConstact.View view) {
        this.view = view;
        view.setPresenter(this);
    }

    @Override
    public void start() {
    }

    @Override
    public void loadWeixinHotList(String num, String rand, String word, String page, String src) {
        
    }
}