MVVM 登录注册

M:model,业务逻辑

V:加载视图,和layout通信,进行数据绑定与更新,对应Activity(由于代码是在太少,有时自带启动自己的方法)

VM:判断条件,逻辑实现

要注意项目的框架

还有环境配置

dataBinding{
    enabled=true
}

LoginViewModel:

public ObservableField<String> loginMessage;
    public ObservableInt loginMessageVisibility;
    private String editTextUsernameValue = "";
    private String editTextPasswordValue = "";
    public LoginViewModel(Context context) {
        this.context = context;
        this.loginMessage = new ObservableField<>("");
        this.loginMessageVisibility = new ObservableInt(View.INVISIBLE);
    }
    //登陆,实际上这个方法是在layout文件中调用的
    public void loginAuthentication(View view) {
        if ((editTextUsernameValue.equals("lqy")) &(editTextPasswordValue.equals("123")){
            loginMessage.set("");
            loginMessageVisibility.set(View.INVISIBLE);
            User user = new User(editTextUsernameValue, editTextPasswordValue);
            context.startActivity(MainActivity.newIntent(context, user));
        } else if ((editTextUsernameValue.equals("")) (editTextPasswordValue.equals("")){
            loginMessage.set("Username or Password can't be empty!");
            loginMessageVisibility.set(View.VISIBLE);
        } else {
            loginMessage.set("Username = lqy \n Password = 123");
            loginMessageVisibility.set(View.VISIBLE);

        }
    }
    //观察Text变化的TextWatcher
    public TextWatcher getUsernameUpdate() {
        return new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1,inti2{
            }
            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
               editTextUsernameValue = charSequence.toString();
            }
            @Override
            public void afterTextChanged(Editable editable) {
            }
        };
    }
    public TextWatcher getPasswordUpdate() {
        return new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1,inti2{
            }
            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                editTextPasswordValue = charSequence.toString();
            }
            @Override
            public void afterTextChanged(Editable editable) {
            }
        };
    }
    @Override
    public void destroy() {
    }

}

MainActivity

还有就是一些layout文件,根据个人感觉进行调整。

要注意layout文件的id重复,调用错误。

MVVM总结:通过View加载布局,并通过布局调ViewModel中的方法,VeiwModel可以通过调用后的结果决定启动什么视图,同时ViewModel保持和model的通信。
————————————————

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值