Как объединить много LiveDatas вместе и превратить в один объект? - PullRequest
2 голосов
/ 27 сентября 2019

Я ищу способ объединить некоторые функции LiveData из моего Dao и преобразовать их в единую сущность.Я хочу создать что-то вроде этого:

private val combinedValues(ld1, ld2, ld3, ld4){
   first, second, third, fourth -> CombinedLiveDataValues(first, second, third, fourth)
}

val combinedEntity: LiveData<Any> = Transformations.map(combinedValues){ it->
   val something = it.first.map (etc...)
}

Как создать способ не дублировать код, обобщать и добавлять десятки liveDatas вместе?

1 Ответ

0 голосов
/ 27 сентября 2019

Вы можете использовать что-то вроде этого

fun<T> combine(context: AppCompatActivity, vararg input: LiveData<T>): LiveData<T> {
    val output = MutableLiveData<T>()
    input.forEach {
        it.observe(context, androidx.lifecycle.Observer { value -> 
            output.value = value
        })
    }
    return output
}
...