首页 > 解决方案 > Android rxjava更改其他列表中的列表对象

问题描述

我得到一个 API 响应并创建了一个List<Logs>. 此列表包括另一个列表List<Debits>。我想要做的是获取每个Debits对象并更改其类型变量,然后返回更改后的List<Logs>. 我有下面的代码

val s = accountRepository.Logs
            .filter { result -> result.isSuccessful }
            .map { result -> result.result.creditLog }
            .flatMap { Logs -> Observable.from(Logs)
                    .map { Log ->
                        copyLog(Log, Observable.from(Log.debits)
                                .map { debit -> copyDebit(debit, "pc") }
                                .toList().toBlocking().single()) }
                    .toList()
            }
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe({ Logs ->

            },{RxErrorHandler()})

我设法遍历List<Logs>然后遍历List<Debits>,尝试使用.toList()但无法获得所需的结果。我有关于如何做到这一点的指南或示例?

标签: androidkotlinrx-javareactive-programmingrx-java2

解决方案


考虑到您正在使用 RxJava 和 Kotlin,为什么不充分利用它呢?

我将删除一些我认为您不需要它们的可观察对象:

          val s = accountRepository.Logs
                        .filter { result -> result.isSuccessful }
                        .map { result -> 
                          result.result.creditLog.foreach{ 
                             log ->
                              log.debits.foreach{ debit -> debit.type = “pc” }
                          }
                        return result.creditLog  
                 }.subscribeOn(Schedulers.io())
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribe({ Logs ->

                        },{RxErrorHandler()})

我还没有测试代码,但我会说你需要小的修复/更改


推荐阅读