我是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");
}
}
}
答案 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");
}
}
}