RxJava在列表上执行操作并返回一个observable
发布时间:2020-12-15 02:18:11 所属栏目:Java 来源:网络整理
导读:我是Rx Java的新手(特别是Rx Java2),我在使用看似相对简单的操作时遇到了一些麻烦.我需要从db获取一些数据,遍历数据(它表示为列表),对每个项执行操作,将数据包装在另一个对象中并返回.这是我到目前为止: mDataManager .getStuffList(id) .flatMapIterable(l
我是Rx
Java的新手(特别是Rx
Java2),我在使用看似相对简单的操作时遇到了一些麻烦.我需要从db获取一些数据,遍历数据(它表示为列表),对每个项执行操作,将数据包装在另一个对象中并返回.这是我到目前为止:
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()将不会发出该事件. 解决方法
在RxJava 2中,toList返回一个Single:它相当于只有一个项目的Observable.您可以通过添加.toObservable将其转换为Observable,但通常不需要这样做.
关于您的其他更改,无论何时基础数据发生变化,您的意思是什么?您的数据管理员是否会通知您数据更改? 编辑:如果你的mDataManager.getStuffList(id)调用返回一个发出多个项的Observable(也就是说,它永远不会完成但总是在更改后发出最新的数据集),那么你需要做这样的事情: mDataManager .getStuffList(id) .flatMap(listOfStuff -> Observable .from(listOfStuff) .flatMap(item -> mDataManager .performCount(id,item.getTitle()) .doOnNext(item::setCounter) .takeLast(1) .map(counter -> item) .toList() ) ) ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |