これは、短い例で最もよく説明されています。
だが、これは私がフィルタ状態を処理するために、チェックボックスを使用しある観測値の状態を使用して、別の観測値の値をスキップする方法はありますか?
Observable.interval(1, TimeUnit.SECONDS)
をフィルタリングすることを観察できる私の源であるとしましょう。ボックスがチェックされていない場合は、すべての値をスキップします。
私はこのようなチェックボックスのために観察取得するRxAndroidを使用します。私はちょうど午前
Observable.combineLatest(
RxCompoundButton.checkedChanges(checkBox)
, Observable.interval(1, TimeUnit.SECONDS)
, (isChecked, intervalCounter) -> {
if (!isChecked) {
return null;
} else {
return intervalCounter;
}
}
).filter(Objects::nonNull)
と私は、所望の出力
interval 1--2--3--4--5--6--7--8--9
checkbox 0-----1--------0-----1---
combineLatest
result ------3--4--5--------8--9
を得る:ここ
RxCompoundButton.checkedChanges(checkBox)
は私のコードですRxJavaを使い始めると私の "解決策"が正しく感じられません:
あなたは、 ctionはマジック値null
を返し、フィルタはこれらをスキップしますnulls
。
これは、私が既に知っていてもフィルタ関数が呼び出され、このデータをスキップしたいということです。
- 多分私は
- は、多分私はこのデータをスキップすることを知らせるために機能を組み合わせることで、いくつかの方法があり、チェックボックス、観察可能なフィルタ機能でを使用する方法がある別のオペレータ
- を使用する必要があります