我的Observable
永远不会完成。它会发出List<Item>
。我每次发出该列表时都需要过滤掉其中的一些项目。目前我有这个解决方案:
mData.getItemsObservable() // Observable<List<Item>>
.compose(...)
.flatMapSingle(items -> Observable.fromIterable(items)
.filter(item -> item.someCondition())
.toList())
.subscribe(items -> {
// ...
}, error -> {
// ...
});
这是过滤掉一些物品的最佳方法吗?是否有更简单(更易读)的方法来做同样的事情?
我也试过这个,但它没有发出任何东西:
mData.getItemsObservable() // Observable<List<Item>>
.compose(...)
.flatMap(Observable::fromIterable) // or like this: flatMapIterable(items -> items)
.filter(item -> item.someCondition())
.toList()
.subscribe(items -> {
// ...
}, error -> {
// ...
});
答案 0 :(得分:1)
如果你想坚持RxJava
,第一种方法是可以的。否则,您可以使用IxJava并直接在map
操作中执行过滤:
mData.getItemsObservable() // Observable<List<Item>>
.compose(...)
.map(v -> Ix.from(v).filter(w -> w.someCondition()).toList())
.subscribe(items -> {
// ...
}, error -> {
// ...
});