如何将大量LiveData组合在一起并转换为单个实体?

时间:2019-09-27 13:47:11

标签: kotlin android-lifecycle android-livedata

我正在寻找一种方法来组合Dao中的一些LiveData函数并将其转换为单个实体。我想创建这样的东西:

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...)
}

如何创建一种不重复代码,不对所有liveData进行汇总和添加的方法?

1 个答案:

答案 0 :(得分:-1)

您可以使用类似的东西

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
}