Robobinding框架(Android)中的验证

Robobinding框架(Android)中的验证,android,validation,robobinding,Android,Validation,Robobinding,我是Android开发的新手。我曾经开发过Android应用程序,但我没有找到任何解决方案来在演示模型(而不是活动)中创建验证。有没有人遇到过类似的问题?选择哪种方法? 我需要这样的东西: public class LoginPM extends AbstractPresentationModel { private String login; public String getLogin() { return login; } public vo

我是Android开发的新手。我曾经开发过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");
            }
        }
  }
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");
            }
        }
  }

我已经解决了使用反射从绑定对象映射(Robobindings)获取用户控件的任务。

这样使用:

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");
            }
        }
  }
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");
            }
        }
  }

很抱歉迟了答复。我没有注意到这个问题。您的LoginActivity和LoginPM之间是否有LoginView接口?通过这种方式,您可以执行以下操作:

public void login() {
  if(isInvalid(loginInfo)) {
    loginView.setLoginError("error info");
  } else {
    loginService.login(loginInfo);
  }
}
或者,您可以为TextView实现OnTextChange事件,这相当容易做到。您可以参考TextView的文本属性绑定实现。您可以注册一个方法来侦听事件。触发事件后,可以从事件对象获取TextView

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

如果你愿意,你可以发布到robobindinggoogle组中,以获得快速响应

希望这有帮助,
Cheng

此外,您还可以为TextView实现错误绑定属性,并相应地更新错误信息。这真的有可能吗?我认为TextView和EditText没有可访问的错误属性。只有方法setError(“MSG”)是可能的。@Holla,这当然是可能的。您只需为TextView.error实现一个绑定属性,就像任何其他绑定属性一样。如果您感兴趣,请查看文档和源代码。这很容易做到。好的,我会尝试一下,我认为它不可访问,因为它不在XML属性列表中:不,它不需要在Android XML属性列表中。对我不起作用:
org.robobinding.binder.ViewHierarchyInflationErrorsException:------------------------------------EditText(1个错误)-----------------------错误:无法识别的属性“error”-------------第一个错误堆栈跟踪-----------------错误:org.robobinding.PendingAttributesForViewImpl.getResolutionErrors上无法识别的属性“error”(PendingAttributesForViewImpl.java:43)位于org.robobinding.binder.BindingAttributeResolver.resolve(BindingAttributeResolver.java:38)