flatMapBySource
fun <T, S> LiveData<out Collection<S>>.flatMapBySource(mapFunction: (S) -> LiveData<out Collection<T>>): LiveData<Collection<Pair<S, T>>>
Transforms a LiveData containing a list of type T, which contains all the child elements from each element in this
LiveData list together with its source, by flattening it.
For example:
// GIVEN
val source1 = Holder(1, 2, 3)
val source2 = Holder(4, 5)
val source = MutableLiveData<List<Holder>>(listOf(source1, source2))
// WHEN
val flatMapped = sources.flatMapBySource { holder -> holder.contents }
// THEN
// Observing flatMapped.value yields:
listOf(
Pair(source1, 1),
Pair(source1, 2),
Pair(source1, 3),
Pair(source2, 4),
Pair(source2, 5)
)
Content copied to clipboard
Whenever either this
or one of the lists inside of this
changes, the returned LiveData value is also updated.