java RxJava对列表执行操作并返回可观察的
我对RxJava(特别是RxJava2)还不熟悉,而且我对一个似乎相对简单的操作有些困难。我需要从数据库中获取一些数据,遍历数据(它被表示为一个列表),对每个项执行操作,将数据包装到另一个对象中并返回。这就是我目前的情况:
mDataManager
.getStuffList(id)
.flatMapIterable(listOfStuff -> listOfStuff)
.flatMap(item ->
mDataManager
.performCount(id, item.getTitle())
.doOnNext(item::setCounter)
.takeLast(1)
.map(counter -> item))
.toList()
.toObservable()
.flatMap(listOfStuff -> Observable.just(new StuffWrapper(listOfStuff));
我遇到的问题是,我的数据管理器调用从未完成。其想法是,只要底层数据发生变化,UI也会发生变化。但是,如果不完成这些调用,toList()将不会发出事件
# 1 楼答案
在rxjava2中,
toList
返回一个Single
:它相当于只包含一个项的Observable
。你可以通过添加.toObservable
将其转换为可观察的,但这并不经常需要关于你的其他变化,你所说的
whenever the underlying data changes
是什么意思?您的数据经理是否会在数据更改时通知您编辑:如果您的
mDataManager.getStuffList(id)
调用返回一个Observable
并发出多个项目(也就是说,它从未完成,但总是在更改后发出最新的数据集),那么您需要执行以下操作: