groovy
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.4.0'
kotlin
fun <X, Y> LiveData<X>.switchMap(func: (X) -> LiveData<Y>): LiveData<Y> {
val result = MediatorLiveData<Y>()
result.addSource(this) { x ->
val newLiveData = func(x)
result.removeSource(this)
result.addSource(newLiveData) { y ->
result.value = y
}
}
return result
}
kotlin
val inputLiveData = MutableLiveData<String>()
val transformedLiveData = inputLiveData.switchMap { input ->
Transformations.map(inputLiveData) { data ->
}
}