Android RxJava筛选器不向订阅发送结果
我有RxJava过滤器来获取POA,但是POA没有被删除(停用),我很确定我有一个结果,但是我在subscribe中没有得到任何结果Android RxJava筛选器不向订阅发送结果,android,rx-java,rx-java2,rx-android,Android,Rx Java,Rx Java2,Rx Android,我有RxJava过滤器来获取POA,但是POA没有被删除(停用),我很确定我有一个结果,但是我在subscribe中没有得到任何结果 Disposable disposable = appDatabase.poaDao().getAllMine() .flatMap(poaDbs -> Flowable.fromIterable(poaDbs)) .filter(poaDb -> !poaDb.isDeleted()) .toList() .subsc
Disposable disposable = appDatabase.poaDao().getAllMine()
.flatMap(poaDbs -> Flowable.fromIterable(poaDbs))
.filter(poaDb -> !poaDb.isDeleted())
.toList()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(poaDbs ->
view.onActivePoasIssuedByMe(poaDbs),
throwable -> view.handleError(throwable));
原因可能是什么?我已尝试过调试,但它始终无法到达SUNBCRIBE()。您的问题是观察对象未完成,因此将永远不会执行
.toList()
。你说你需要过滤你得到的列表,但如果是这样,你有一个不同的选择 而不是这样做:
.flatMap(poaDbs -> Flowable.fromIterable(poaDbs))
.filter(poaDb -> !poaDb.isDeleted())
.toList()
您要执行以下操作:
.flatMapSingle(poaDbs -> Observable.fromIterable(poaDbs)
.filter(poaDb -> !poaDb.isDeleted())
.toList())
请注意,.filter
和.toList
运算符应用于内部可观察对象
额外注意:当使用Kotlin时,这更容易,因为它提供了对集合的
筛选
操作,并且您不必依赖RxJava或Java8流这与此有关吗?可能是因为它在我删除toList后返回所有结果,但我需要筛选数据。是否有其他方法以反应式方式过滤数据?将getAllMine()
定义为Single
,您应该得到一个要过滤的结果列表。