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