MVP入门框架搭建

来源:互联网 发布:sql unix timestamp 编辑:程序博客网 时间:2024/05/17 08:22

MVP入门框架搭建

首先,新建一个项目,在项目下创建文件夹,也就是分包:
这里写图片描述
有人也喜欢将UI命名为view,都是可以的,完全看自己喜好。
在这呢来解释下什么是MVP,简单的说:
M –> Model 在它里面主要处理一些数据,比如网络请求或者是读取本地数据等
V –> View 这就是个视图
P –> Presenter 它主要的左右就是一个桥梁,将M和V链接起来,V需要什么数据,通过P来通知M去获取,M获取到通过P回调传回V中展示,回传一般使用自定义接口回调的形式。
在这就通过MVP来简单的做个项目。

开始新建项目

1、建好项目后,在 presenter下建listener包,来存放回调函数。
2、在listener下创建接口OnGetTextListener

public interface OnGetTextListener {    /**     * 成功后的回调函数     * @param string     */    void onGetTextSuccess(String string);    /**     * 失败后的回调函数     * @param string     */    void onFetTextFail(String string);}

3、在model下新建TextModel.class文件,主要用于获取数据,比如网络请求或者是从本地数据库读取数据等。

public class TextModel {    public void getText(final OnGetTextListener listener){        /*        在此执行网络请求,或者读取本地数据库文件        此处只用线程阻塞模拟下网络请求         */        try {            Thread.sleep(2000);            listener.onGetTextSuccess("MVP入门框架搭建");        }catch (InterruptedException  e){            //出现异常,标示失败,调用失败的回调方法            listener.onFetTextFail(e.getMessage());        }    }}

4、在presenter下新建TextPresenter.class文件,主要用于view向presenter发送请求指令后,presenter调用model中的方法来获取数据。

public class TextPresenter {    private TextModel model;    private OnGetTextListener listener;    /*    初始化实例,将view中的listener传递过来,方便回调函数获取数据     */    public TextPresenter (OnGetTextListener listener){        model = new TextModel();        this.listener = listener;    }    public void onGetText(){        model.getText(listener);    }}

5、下面MainActivity中要做的事情就是初始化presenter实例,然后调用其方法,告知model,model获取到数据后通过listener回调函数将数据传递到MainActivity中,刷新view。

public class MainActivity extends AppCompatActivity implements OnGetTextListener,View.OnClickListener{    private Button btn;    private TextView textview;    private TextPresenter presenter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //初始化控件        initView();        //获取数据        initData();    }    //初始化控件    private void initView() {        btn = (Button) findViewById(R.id.btn);        textview = (TextView) findViewById(R.id.textview);        btn.setOnClickListener(this);    }    //获取数据    private void initData() {        presenter = new TextPresenter(this);    }    //数据成功回调    @Override    public void onGetTextSuccess(String string) {        textview.setText("回调成功:" + string);    }    //数据失败回调    @Override    public void onFetTextFail(String string) {        textview.setText("回调失败:" + string);    }    @Override    public void onClick(View v) {        presenter.onGetText();    }}

一定要记得MainActivity必须实现OnGetText接口。
到此,一个MVP入门框架就算是完成了。恭喜你!
附GitHub下载地址:https://github.com/WKQuan/MVPFrame