2014-10-08 73 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