1 Star 0 Fork 0

abe_peng / MVPFrame

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

MVPFrame

集成说明

build.gradle中加入如下代码

repositories {

    //略
    
    //指定路径
    maven { url "https://gitee.com/abe_peng/MVPFrame/raw/master" }
}

compile('com.abe.mvp:core:1.4')

使用说明

1.协议

public class ExContract {

    public interface ExView extends BaseView {
        void onReqEx(boolean isSuccess);
    }

    public interface Ex2View extends BaseView {
        void onReqEx2(boolean isSuccess);
    }

    public interface ExPresenter {
        void reqEx();
    }

    public interface Ex2Presenter {
        void reqEx2();
    }

    public interface Model {
        void reqEx(OnResultListener<Boolean> listener);

        void reqEx2(OnResultListener<Boolean> listener);
    }
}

2.Model

public class ExModel implements ExContract.Model {
    @Override
    public void reqEx(OnResultListener<Boolean> listener) {
        listener.onStart();
        listener.onSuccess(true);
        listener.onEnd();
    }

    @Override
    public void reqEx2(OnResultListener<Boolean> listener) {
        listener.onStart();
        listener.onSuccess(true);
        listener.onEnd();
    }
}

3.presenter-view 通用用法

public class ExPresenter extends BasePresenter<ExContract.ExView, ExModel> implements ExContract.ExPresenter {

    @Override
    public void reqEx() {
        getModel().reqEx(new OnResultListener<Boolean>() {
            @Override
            public void onStart() {

            }

            @Override
            public void onEnd() {
                ExPresenter.this.onEnd(ExPresenter.class.getSimpleName());
            }

            @Override
            public void onSuccess(Boolean data) {
                if (ExPresenter.this.onSuccess(data)) {
                    getView().onReqEx(data);
                }
            }

            @Override
            public void onFailure(String message) {
                ExPresenter.this.onFailure(ExPresenter.class.getSimpleName());
            }
        });
    }
}

public class ExActivity extends Activity implements ExContract.ExView {
    TextView textView;
    ExPresenter presenter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ex);
        presenter = new ExPresenter();
        presenter.attachView(this);
        textView = findViewById(R.id.item_text);
        findViewById(R.id.item_btn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                presenter.reqEx();
            }
        });
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        if (presenter != null) {
            presenter.detachView();
        }
    }

    @Override
    public void onReqEx(boolean isSuccess) {
        if (isSuccess) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd HH:mm:ss.zzz", Locale.CHINA);
                    String string = "通过MVP改变:" + format.format(new Date());
                    textView.setText(string);
                }
            });
        }
    }

    @Override
    public void onFinish(Object type) {

    }

    @Override
    public void onFailure(Object type) {

    }
}

4.PresenterHelper 通过Helper管理Presenter生命周期

public class Ex2Presenter extends BasePresenter<ExContract.Ex2View, ExModel> implements ExContract.Ex2Presenter {
    @Override
    public void reqEx2() {
        getModel().reqEx2(new OnResultListener<Boolean>() {
            @Override
            public void onStart() {

            }

            @Override
            public void onEnd() {
                Ex2Presenter.this.onEnd(Ex2Presenter.class.getSimpleName());
            }

            @Override
            public void onSuccess(Boolean data) {
                if (Ex2Presenter.this.onSuccess(data)) {
                    getView().onReqEx2(data);
                }
            }

            @Override
            public void onFailure(String message) {
                Ex2Presenter.this.onFailure(Ex2Presenter.class.getSimpleName());
            }
        });
    }
}

public class Ex2Activity extends Activity implements ExContract.ExView, ExContract.Ex2View {

    TextView textView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ex2);
        textView = findViewById(R.id.item_text);
        findViewById(R.id.item_btn1).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ((ExPresenter) getPresenter(ExPresenter.class)).reqEx();
            }
        });
        findViewById(R.id.item_btn2).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ((Ex2Presenter) getPresenter(Ex2Presenter.class)).reqEx2();
            }
        });
    }

    private BasePresenter getPresenter(Class<?> presenterClass) {
        return (BasePresenter) PresenterHelper.getInstance().getPresenter(presenterClass, Ex2Activity.this);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        PresenterHelper.getInstance().destroy(Ex2Activity.this);
    }

    @Override
    public void onReqEx(boolean isSuccess) {
        if (isSuccess) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd HH:mm:ss.zzz", Locale.CHINA);
                    String string = "通过MVP改变:" + format.format(new Date());
                    textView.setText(string);
                }
            });
        }
    }

    @Override
    public void onReqEx2(boolean isSuccess) {
        if (isSuccess) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd HH:mm:ss.zzz", Locale.CHINA);
                    String string = "通过MVP-2改变:" + format.format(new Date());
                    textView.setText(string);
                }
            });
        }
    }

    @Override
    public void onFinish(Object type) {

    }

    @Override
    public void onFailure(Object type) {

    }
}

空文件

简介

MVP框架,包含Contract、Model、View、Presenter 展开 收起
Android
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Android
1
https://gitee.com/abe_peng/MVPFrame.git
git@gitee.com:abe_peng/MVPFrame.git
abe_peng
MVPFrame
MVPFrame
master

搜索帮助