1

我是Android开发的新手。我使用Robobinding(MVVM 框架)来开发 Android 应用程序,但我没有找到任何解决方案来在演示模型中创建验证(而不是在活动中)。有没有人遇到过类似的问题?选择哪种方法?我需要这样的东西:

public class LoginPM extends AbstractPresentationModel {
        private String login;
        public String getLogin() { return login; }
        public void setLogin(String value)
        {
            if (!StringComparator.IsEquals(this.login, value))
            {
                if(TextUtils.isEmpty(value))
                {
                 setError("login", "Field cannot be left blank.");
                 return;
                }
                this.login = value;
                firePropertyChange("login");
            }
        }
  }

样本

4

2 回答 2

1

这么晚才回复很抱歉。我没有注意到这个问题。你的 LoginActivity 和 LoginPM 之间可以有一个 LoginView 接口吗?这样,您可以执行以下操作:

public void login() {
  if(isInvalid(loginInfo)) {
    loginView.setLoginError("error info");
  } else {
    loginService.login(loginInfo);
  }
}

或者,您可以为 TextView 实现 OnTextChange 事件,这很容易做到。可以参考TextView的文本属性绑定实现。你可以注册一个方法来监听事件。触发事件后,您可以从事件对象中获取 TextView。

此外,您可以为 TextView 实现错误绑定属性并相应地更新错误信息。

如果您愿意,您可以在 RoboBinding 谷歌群组中发帖以获得快速回复。

希望这会有所帮助, 程

于 2014-10-15T07:18:19.313 回答
0

我已经使用反射解决了我的任务,以从绑定对象映射(Robobindings)获取用户控件。 https://github.com/Barbanyaga/RobobindingValidation/blob/master/BasePresentationModel.java

像这样使用:

public class LoginPM extends BasePresentationModel {
        private String login;
        public String getLogin() { return login; }
        public void setLogin(String value)
        {
            if (!StringComparator.IsEquals(this.login, value))
            {
                if(TextUtils.isEmpty(value))
                {
                 setError("login", "Field cannot be left blank.");
                 return;
                }
                this.login = value;
                firePropertyChange("login");
            }
        }
  }
于 2014-10-08T11:29:54.393 回答