我有两个可观察的对象-OnPeriodChanged和OnFilterChanged,并试图弄清楚当其中一个发生更改时如何为视图适配器调用函数。我已经尝试过.zip,但是由于某种原因它没有被触发:
Observable.zip(OnPeriodChanged, OnFilterChanged, (Date, Filter) -> HistoryViewModel.getScans(Date.first, Date.second, Filter)).subscribe(scans -> histAdapter.setScans(scans));
在这里我可以用来调用getter函数并将结果从它传递给setter吗?
答案 0 :(得分:1)
zip
仅在您的两个可观察值(OnPeriodChanged
,OnFilterChanged
)都发出之后才将项目发出到下游。我想你正在努力
每当有任何项更改时,都调用HistoryViewModel.getScans
,其最新值为Date
和Filter
。您可以使用combineLatest
代替zip
尝试将其更改为
Observable.combineLatest(OnPeriodChanged, OnFilterChanged, (Date, Filter) -> HistoryViewModel.getScans(Date.first, Date.second, Filter))
.subscribe(scans -> histAdapter.setScans(scans));