我的设置类似于以下内容(用于解释问题的抽象示例):
val o1: Observable<List<Parent>> = ... // simply parent observable without dependencies
val o2: Observable<List<Child>> = ... // simply child observable without dependencies
val o3: Observable<List<Child>> = o2.flatMapSingle {
Observable.fromIterable(it)
.flatMapSingle { getChildrenOfChild(it) } // <= simply get all children of the child `it`
.toList()
}
// Observable with the data of ALL parents and children
val o = Observable.combineLatest(o1, o3, BiFunction<List<Parent>, List<Child>, Pair<List<Parent>, List<Child>> {
parents, children -> Pair(parents, children) })
.map {
// here the data is converted to my desired UI state
}
只要父母列表或子列表发生变化,它就会发出新数据。我想对此进行调整,以便每当孩子的孩子列表发生变化时,孩子列表就会发出新的项目,我能以某种方式做到这一点吗?我不知道如何在内部combineLatest
中使用类似flatMap
的东西...
我想要的
有什么办法解决这个问题吗?