我将尝试使用MVP架构并在View端使用RxJava和RxBinding来实现Android应用程序中的屏幕。基本上,我有两个下拉列表、一个文本编辑框和一个默认情况下禁用的按钮。当下拉列表选择了项目且文本字段不为空时,我想启用该按钮。以下是代码:
现在的问题是如何将它集成到 MVP 模式中。理想情况下,“启用按钮”的“业务逻辑”应该在 presenter 中。实现这一点的最佳方法是什么?我正在考虑以某种方式将原始观察者传递给 presenter(附带问题是如何传递?),presenter 将组合这些观察者并具有启用按钮的逻辑,最后它只需调用 View 来修改按钮状态即可。
还有更好的选择吗?有没有关于 RxJava 在 View 端使用 MVP 的好例子呢?
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 模式中。理想情况下,“启用按钮”的“业务逻辑”应该在 presenter 中。实现这一点的最佳方法是什么?我正在考虑以某种方式将原始观察者传递给 presenter(附带问题是如何传递?),presenter 将组合这些观察者并具有启用按钮的逻辑,最后它只需调用 View 来修改按钮状态即可。
还有更好的选择吗?有没有关于 RxJava 在 View 端使用 MVP 的好例子呢?