Robobinding框架验证(Android)

时间:2014-10-08 10:36:12

标签: android validation robobinding

我是Android开发的新手。我使用Robobinding (MVVM framework)来开发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");
            }
        }
  }

Sample

2 个答案:

答案 0 :(得分:1)

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

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

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

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

如果您愿意,可以发布到RoboBinding谷歌小组以获得快速回复。

希望这有帮助, 程

答案 1 :(得分: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");
            }
        }
  }