将两个可观察到的布尔值与ObservableBoolean或Observable <boolean>组合在一起

时间:2015-12-30 14:26:17

标签: java android asynchronous rx-java observable

在JavaFX中,您可以执行以下操作来组合两个可观察的布尔值:

BooleanProperty imagesDownloaded = new SimpleBooleanProperty(false);
BooleanProperty animationComplete = new SimpleBooleanProperty(false);

BooleanBinding isValid = imagesDownloaded.and(animationComplete);

如何使用RxJava或Google的Databinding API执行相同的操作? 我还想听取isValid变量的值变化。

1 个答案:

答案 0 :(得分:4)

根据您的目标,您可以使用Observable.combineLatest()Observable.zip()Observable.merge()和其他operators

我只想添加一个简短的例子来展示RxJava中的内容:

PublishSubject<Boolean> property1 = PublishSubject.create();
PublishSubject<Boolean> property2 = PublishSubject.create();

Observable.combineLatest(property1,
                         property2,
                         (propertyOneValue, propertyTwoValue) -> propertyOneValue && propertyTwoValue)
          .subscribe(isValid -> doWork(isValid));

// sometime later
property1.onNext(true);
property2.onNext(true);