在JavaFX中,您可以执行以下操作来组合两个可观察的布尔值:
BooleanProperty imagesDownloaded = new SimpleBooleanProperty(false);
BooleanProperty animationComplete = new SimpleBooleanProperty(false);
BooleanBinding isValid = imagesDownloaded.and(animationComplete);
如何使用RxJava或Google的Databinding API执行相同的操作?
我还想听取isValid
变量的值变化。
答案 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);