Я пытаюсь реализовать экран в Android-приложении с использованием архитектуры MVP и используя RxJava и RxBinding на стороне View.RxJava и MVP в приложении для Android
В основном у меня есть 2 Spinners, 1 TextEdit и кнопка, которая по умолчанию отключена. Я хочу включить кнопку, когда у Spinners есть элементы, и текстовое поле не пустое. Вот код:
Observable.combineLatest(
RxAdapterView.itemSelections(mFirstSpinner),
RxAdapterView.itemSelections(mSecondSpinner),
RxTextView.textChanges(mEditText),
new Func3<Integer, Integer, CharSequence, Boolean>() {
@Override
public Boolean call(Integer first, Integer second, CharSequence value) {
return !TextUtils.isEmpty(value);
}
}).subscribe(new Action1<Boolean>() {
@Override
public void call(Boolean enable) {
mButton.setEnabled(enable);
}
});
Вопрос теперь в том, как интегрировать это в шаблон MVP. В идеале «бизнес-логика» включения кнопки должна быть в презентаторе. Каков наилучший способ достичь этого? Я думаю о том, чтобы каким-то образом передать исходных наблюдателей в презентаторе (как вопрос?), А ведущий объединил этих наблюдателей, и у него была бы логика включения кнопки. В конце концов, это просто вызовет View для изменения состояния кнопки.
Есть ли лучшие варианты? Есть ли хорошие примеры MVP с RxJava на стороне View?
Это очень похоже на подход, который я предложил и внедрил. Единственное отличие состоит в том, что я передаю 3 отдельных наблюдателя в презентацию вместо того, чтобы комбинировать их на стороне обзора.Сочетание 3 из них также является своеобразной «бизнес-логикой». В будущем мы можем использовать только 2 поля или добавить еще несколько. –