android - 如何访问 LiveData 的每个元素> 使用 Kotlin?
问题描述
代码 A 用于for (aMovice in listVoiceBySort.value!!)
访问LiveData<List<MVoice>>
.
但我认为这不是一个好方法,因为它使用listVoiceBySort.value!!
,它很丑。
有没有访问每个元素的好方法LiveData<List<MVoice>>
?
代码 A
val listVoiceBySort: LiveData<List<MVoice>> =_listVoiceBySort
fun selectAllIDs(){
for (aMovice in listVoiceBySort.value!!){
selectedIDs.add(aMovice.id)
}
}
解决方案
使用具有相同功能的内联函数会更好。它允许您使用安全调用 ( ) 而不是非空断言 ( ):forEach
?.
!!
fun selectAllIDs() {
listVoiceBySort.value?.forEach {
selectedIDs.add(it.id)
}
}
另一种方法是将MVoice
元素映射到它们的 id,然后将它们全部添加到selectedIDs
:
fun selectAllIDs() {
listVoiceBySort.value?.map { it.id }?.let {
selectedIDs.addAll(it)
}
}
推荐阅读
- android - Android Studio 突然不再在手机上运行 Flutter/Android 应用程序了
- php - 如何在 WordPress 的小部件中列出多个页面?
- mule4 - Mule 4:当 Autodiscovery 自动为已部署的 API 应用策略并对其进行管理时,为什么要在 API 规范中添加客户端 ID 强制执行?
- flutter - 如何检查应用程序更新代码是否有效
- python - Keras如何为下载的模型强制进行 BatchNormalization 的零伽马初始化
- flutter - 如何使用 dart 和 Flutter 创建应用并保存本地数据?
- apache-kafka - Webhook 数据到 Kafka Connect
- haskell - 单子挑战 - 一个错过的概括
- android - 在 Web 视图中仅显示网页的某些部分,AndroidStudio?
- android - jetpack compose 中未显示流量数据