2017-02-17 208 views
2

我使用15個輸入創建表單,並且希望觀察這些輸入以檢查是否有更改,我將輸入的結果與當前的userModel進行比較。我怎樣才能減少代碼,因爲似乎有點複雜。它看起來像:RxJava combineLatest - 從變化中可觀察到

Observable.combineLatest(fieldsViewHolder.observableInputsChanges(), new FuncN<Boolean>() { 
      @Override 
      public Boolean call(Object... args) { 

       if(userModel != null) { 
        return args[0].toString().equals(userModel.getFirstName()) && args[1].toString().equals(userModel.getLastName()) && args[2].toString().equals(userModel.getEmail()) && 
          args[3].toString().equals(userModel.getMobilePhone()) && args[4].toString().equals(userModel.getCompanyPlace()) && args[5].toString().equals(userModel.getCompanyName()) && 
          args[6].toString().equals(userModel.getCountry()) && args[7].toString().equals(userModel.getCompanyPosition()) && args[8].toString().equals(userModel.getPhone()) && 
          args[9].toString().equals(userModel.getPostalCode()) && args[10].toString().equals(userModel.getStreet1()) && args[11].toString().equals(userModel.getStreet2()) && 
          args[12].toString().equals(userModel.getFirstName()) && args[13].toString().equals(userModel.getWebPage()) && args[14].toString().equals(userModel.getCity()); 
       } 
       return args[0].toString().isEmpty() && args[1].toString().isEmpty() && args[2].toString().isEmpty() && 
        args[3].toString().isEmpty() && args[4].toString().isEmpty() && args[5].toString().isEmpty() && 
        args[6].toString().isEmpty() && args[7].toString().isEmpty() && args[8].toString().isEmpty() && 
        args[9].toString().isEmpty() && args[10].toString().isEmpty() && args[11].toString().isEmpty() && 
        args[12].toString().isEmpty() && args[13].toString().isEmpty() && args[14].toString().isEmpty(); 
      } 
     }); 

回答

2

您可以創建一個構造函數的usermodel對象(通過所有參數傳遞給它) 在構造函數映射每個參數傳遞給現場你想要的。現在你有另一個UserModel。 你可以通過覆蓋等於UserModel來比較它們,或者你可以使用Gson轉換它們並比較String!我喜歡第一個解決方案

更新 爲您編輯後,添加您可以檢查這樣的空行:

for(int i = 0; i < 15; i++){ 
     if(!args[i].toString().isEmpty()) { 
     return false; 
     } 
    } 
    return true; 
+0

聽起來很好,但我要檢查所有的輸入'如果它們是空args'對象。看看編輯後 – Michael

+0

@Michael現在檢查:D我首先忘了[i]; –

+0

或類似的東西: 'boolean isChange = true; 對(INT I = 0; I <15;我++){ isChange&= ARGS [I]的ToString()的isEmpty() !}返回isChange;' – Michael