【问题标题】:RxJava - two observablesRxJava - 两个可观察对象
【发布时间】:2019-04-14 02:51:05
【问题描述】:

我有两个 observables - OnPeriodChanged 和 OnFilterChanged,并试图弄清楚当其中一个发生变化时如何为视图适配器调用函数。我试过 .zip,但由于某种原因它没有被触发:

Observable.zip(OnPeriodChanged, OnFilterChanged, (Date, Filter) -> HistoryViewModel.getScans(Date.first, Date.second, Filter)).subscribe(scans -> histAdapter.setScans(scans));

我可以在这里使用什么来调用 getter 函数并将结果传递给 setter?

【问题讨论】:

    标签: java android rx-java2


    【解决方案1】:

    zip 只会在你的两个 observables(OnPeriodChangedOnFilterChanged)发射后才将项目发射到下游。我想你正在尝试 每当有任何项目更改时调用HistoryViewModel.getScans,最新值为DateFilter。你可以使用combineLatest 代替zip

    试试改成

        Observable.combineLatest(OnPeriodChanged, OnFilterChanged, (Date, Filter) -> HistoryViewModel.getScans(Date.first, Date.second, Filter))
                .subscribe(scans -> histAdapter.setScans(scans));
    

    【讨论】:

    • 是的,这就是我最后不得不做的;虽然我在设置了 observable 之后在这两个 observables 上尝试了 startWith 和 onNext,但是 combineLatest 成功了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多