您的位置:首页 > 移动开发 > Android开发

Android Mvp 简单示例

2016-08-12 16:07 405 查看

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做大量的操作, 把页面和逻辑分开了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: