我正在尝试使用 MVP 架构并在视图端使用 RxJava 和 RxBinding 在 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 来修改按钮状态。
有没有更好的选择?在 View 端有没有 RxJava 的 MVP 的好例子?