MVP入门框架搭建

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

猜你喜欢

转载自blog.csdn.net/qq_31344725/article/details/77933970