我想在Android應用程序中使用MVP體系結構實現屏幕,並在視圖端使用RxJava和RxBinding。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來修改按鈕狀態。
有沒有更好的選擇?在視圖方面有RxJava MVP的好例子嗎?
這與我提出並實施的方法非常相似。唯一的區別是,我將3個獨立的觀察者傳遞給演示者,而不是將其組合在視圖上。結合其中的3種也是一種「商業」邏輯。將來我們可能只想使用2個字段,或者添加更多。 –