Android Mvp 简单示例

来源:互联网 发布:我要开店淘宝网 编辑:程序博客网 时间:2024/04/29 04:28

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做大量的操作, 把页面和逻辑分开了。

0 0
原创粉丝点击