2017-02-17 3 views
2

Я создаю форму с 15 входами, и я хочу наблюдать за этими входами, чтобы проверить, что-то было изменено, я сравниваю результаты входов с током userModel. Как я могу уменьшить этот код, потому что, кажется, немного сложнее. Похоже, что:RxJava combinationLatest - наблюдаемый с изменениями

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! Я предпочитаю первое решение.

Update для пустых строк, которые добавляются после редактирования, вы можете проверить, как это:

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

Звуки хорошо, но я хочу, чтобы проверить все входы 'args' объект, если они пусты. Посмотрите edit post – Michael

+0

@ Майкл проверить это сейчас: D Сначала я забыл [i];) –

+0

или что-то в этом роде: 'boolean isChange = true; for (int i = 0; i <15; i ++) { isChange & =! Args [i] .toString(). IsEmpty() } return isChange; ' – Michael

Смежные вопросы