私はMVPデザインパターンを実装しています。私の発表者はビューから新しい値を受け取ります。ビュー上で値が更新されたときにすべてが有効かどうかを自動的にチェックして、次のボタンの状態を管理したい。manage RxJava2でnull boolean PublishSubject
私のフォームには、ユーザーが正しいオプションを選択した場合にのみ表示されるオプションの部分があります。 このオプションの部分には私はバイナリの質問があります。パーツが表示されない場合は、プレゼンター側で質問の値をnullに設定する必要があります。 たとえば、ユーザーがオプションを選択すると、オプションの部分が表示されます。ユーザーが回答を選択します。ユーザーがオプションを変更すると、オプションの部分が非表示になります。その場合、ユーザがオプションの部分を再度表示した場合、回答が選択されていないために、オプションの質問に対する回答をnullに設定する必要があります。
これを行うには、true/falseではなくnull値でPresenter上のメソッドを呼び出します。
private final PublishSubject<Boolean> mObsOptionalAnswer = PublishSubject.create();
public MyPresenter(){
// Combine all the values together to enable/disable the next button
Observable.combineLatest(
// ... other fields
// I need this to return false if the optional part is
// displayed but nothing is selected
mObsOptionalAnswer.map(this::isValid),
(...) -> ...
).subscrible(enable ->{
mView.enableBtn(enable);
});
}
public void myFunction(Boolean isSomething){
// ... some code
mObsOptionalAnswer.onNext(isSomething);
}
private boolean isValid(Boolean value){
return value != null;
}
RxJava 2、null
値はonNext()
方法で許可されていないので問題がある:ここ
コードです。 それで、私はそれをどうやって管理するのですか?
「ブール」の代わりに3状態の列挙型を使用できます。 – akarnokd
これはもっともクリーンな解決策かもしれませんが、ブール値が実際には3つの状態(true、false、null)であることを避けたかったのです。 – Eselfar