android mvp简单示例
博主最近在学mvp,做个简单的博客,锻炼下动手能力。mvp的概念就不介绍了,项目分层model, presenter, view:简单说明下3个层:
- model层 类。
- presenter层 逻辑处理。
- view层 界面视图。
首先创建一个activity:
public class MvpActivity extends BaseAppCompatActivity implements IUserView {
private EditText et_myname;
private EditText et_words;
private Button btn_listen;
private TextView tv_str;
private UserPresenterCompl compl;
private String talkString = "";
private UserModel userModel;
@Override
protected int getLayoutId() {
return R.layout.test_mvp;
}
@Override
public void initElem() {
compl = new UserPresenterCompl(this);
userModel = new UserModel("", 0, true, true);
et_myname = (EditText) findViewById(R.id.et_myname);
et_words = (EditText) findViewById(R.id.et_words);
tv_str = (TextView) findViewById(R.id.tv_str);
btn_listen = (Button) findViewById(R.id.btn_listen);
btn_listen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!et_myname.getText().toString().isEmpty())
userModel.setName(et_myname.getText().toString());
talkString = et_words.getText().toString().trim();
//我跟他说 他听
compl.userListen(talkString, userModel);
}
});
}
@Override
public void onListenResult(String text) {
tv_str.setText(text);
}
}
activity实现了IUserView这个接口:
public interface IUserView {
public void onListenResult(String text); //听完回复
}
业务逻辑的接口
public interface IUserPresenter {
public void userListen(String text, UserModel who); //用户听到某个人说
}
业务逻辑的实现
public class UserPresenterCompl implements IUserPresenter {
private IUserView mainView;
private UserModel obj;
public UserPresenterCompl(IUserView mainView) {
this.mainView = mainView;
obj = new UserModel("小哈", 15, true, true);
}
@Override
public void userListen(String text, UserModel who) {
if (obj.isCanListen() && obj.isCanTalk())
//用户听到了 回复
mainView.onListenResult("我是:" + obj.getName() + ", " + "我听到:" + who.getName() + "说" 时text);
}
}
到这里,可以清楚的明白一个小流程,在activity里面创建了界面视图,button点击的时候分发业务给presenter实现逻辑, present处理完事情把结果返回给了activity,activity根据返回来处理界面的变换。代码逻辑清楚了,在也不会在一个activity做大量的操作, 把页面和逻辑分开了。