【发布时间】:2017-11-10 15:49:51
【问题描述】:
我正在使用 Room 和 RxJava,我想利用第二个的强大功能来过滤来自第一个的数据。
假设房间正在返回用户。
Flowable<List<User> getUsers()
然后我想过滤年龄大于 18 岁的用户,所以我执行了以下操作:
userDao.getUsers()
.flatMap(listUser -> Flowable.fromIterable(listUser).filter(user -> user.age > 18))
.toList()
.toFlowable()
不幸的是,这不起作用。 我的猜测是 toList() 永远不会完成,因为 onTerminated 永远不会被房间调用。 所以我的问题是:我做错了什么?我怎样才能过滤我的用户并且最后仍然有一个 Flowable ?
谢谢
【问题讨论】:
-
在
flatMaplambda 中应用toList,就在filter之后。 Afaik Room 永远不会完成流程,toList要求有限源。您过滤的内部流构成有限。 -
是的,就是这么简单。 Room 永远不会发送任何 onComplete 但使用 fromIterable 的 Flowable 构建会。谢谢
标签: android rx-java2 android-room