如何在RxAndroid中将List <list <x >>转换为List <x>?

时间:2018-10-04 13:42:26

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

我有一个ID列表,我将其映射到子列表列表,以便获取列表>,然后我需要获取一个项目列表,但我不知道合适的运算符。

.map { it ->
      val step = 200
      var count = it.stores.size
      val subLists = ArrayList<List<Int>>()
      var i = 1
      while (count > 0) {
        val start = (i - 1) * step
//if...
        var end = i * step
        count -= step
        val items = it.items.subList(start, end)
        subLists.add(items)
        i++
      }
      subLists
    }
    .toFlowable()
    .flatMapIterable { it -> it }
    .flatMap {
     personDao.loadById(it)
    }.toList()

。我需要获得一份物品清单,怎么办?

2 个答案:

答案 0 :(得分:1)

您可以简单地使用:

val oldList: List<List<T>> = listOf()
val newList = oldList.flatMap { it }

您不必为此使用Rx

如果您需要接收:

val flowable = Flowable.fromIterable(oldList).flatMap { 
        Flowable.fromIterable(it)
    }

您会得到Flowable<T>

答案 1 :(得分:0)

我想回答我想不好的问题。所以我的回答是使用map和内部map覆盖列表,并将其复制到Items列表

.map {
      var items = emptyList<Item>()
      it.map {
        items += it
      }
      items
    }.toFlowable()