import androidx.lifecycle.LiveData import androidx.lifecycle.MediatorLiveData import androidx.lifecycle.Observer class CombinedLiveData(source1: LiveData, source2: LiveData, private val combine: (data1: T?, data2: K?) -> S) : MediatorLiveData() { private var data1: T? = null private var data2: K? = null init { super.addSource(source1) { data1 = it value = combine(data1, data2) } super.addSource(source2) { data2 = it value = combine(data1, data2) } } override fun addSource(source: LiveData, onChanged: Observer) { throw UnsupportedOperationException() } override fun removeSource(toRemote: LiveData) { throw UnsupportedOperationException() } }