RxJava在列表上执行操作并返回一个observable

时间:2017-01-30 14:14:47

标签: java android rx-java reactive-programming rx-java2

我是RxJava的新手(特别是RxJava2),而且我对一个看似相对简单的操作有些麻烦。我需要从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()就不会发出该事件。

1 个答案:

答案 0 :(得分:0)

在RxJava 2中,$('#button1').on('click', function() { var coinAmount = $('#bitcoin').val(), coinContent = 'BTC amount requested: ' + coinAmount, dollarAmount = $('#cad').val(), dollarContent = 'Market: $' + dollarAmount; $('#btc-amount').html(coinContent); $('#cad-quote').html(dollarContent); }); 返回toList:它相当于只有一个项目的Single。您可以通过添加Observable将其转换为Observable,但通常不需要这样做。

关于您的其他更改,.toObservable是什么意思?您的数据管理员是否会通知您数据更改?

编辑:如果您的whenever the underlying data changes调用返回发出多个项目的mDataManager.getStuffList(id)(也就是说,它永远不会完成但总是在更改后发出最新的数据集),那么您需要执行类似的操作这样:

Observable