kotlin - 如何将大量 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...)
}
如何创建一种不重复代码和泛化并添加数十个 liveDatas 的方式?
解决方案
你可以使用这样的东西
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
}
推荐阅读
- c# - 编辑受密码保护的 Excel 二进制 (*.xls) 文件
- ajax - Ajax 不适用于移动设备
- javascript - 当我尝试在空手道中使用 javascript 时出现 gherking.lexer.lexingError
- git - 如果我们进行壁球提交,则无法确定功能分支是否与集成分支合并
- c# - ASP.NET 为整行 Datatable/Gridview 添加超链接
- postgresql - 如何使用 scala PlaySpec 和 Slick 回滚 DAO 测试
- javascript - node.js 动态模块(文件)导出
- ios - 如何将原始 NSData 以及一些 NSStrings 发布到我的服务器?
- java - 无法编写将单个字符串作为参数传递的简单步骤
- python - Python 代理请求和用户代理