У меня есть установка, подобная следующей (абстрактный пример, объясняющий проблему):
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
...
Что я хочу
- [СДЕЛАНО] всякий раз, когдаесть изменения в списке родителей или списке детей. Создайте новое состояние пользовательского интерфейса
- [НЕ ВЫПОЛНЕНО] всякий раз, когда происходит изменение в дочерних элементах ребенка. Я хочу создать новый список дочерних элементов (который автоматически приводит к изменениюсписок детей и, следовательно, будет генерировать новое состояние пользовательского интерфейса)
Есть идеи, как решить эту проблему?