Android Mvp 简单示例

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值