2014-10-08 63 views
1

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

回答

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

很抱歉这么晚才回复。我没有注意到这个问题。你可以在你的LoginActivity和LoginPM之间有一个LoginView界面吗?这样一来,你可以这样做如下:

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

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

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

如果您愿意,您可以发布到RoboBinding谷歌组中以获得快速响应。

希望这有助于 程

+0

*此外,您还可以实现错误相应的TextView和更新错误信息绑定属性。*这真的可能吗?我认为TextView和EditText没有可访问的错误属性。只有方法setError(“MSG”)是可能的。 – Hollerweger 2014-11-06 10:23:08

+0

@霍拉,这当然是可能的。您只需为任何其他绑定属性实现TextView.error的绑定属性即可。看看文档和源代码,如果你有兴趣。这很容易做到。 – Cheng 2014-11-07 11:29:52

+0

好吧,我会尝试,我认为它不可访问,因为它不在XML属性列表中:http://developer.android.com/reference/android/widget/TextView.html – Hollerweger 2014-11-07 15:15:21