如何使用Kotlin访问LiveData <List <MVoice >>的每个元素?

问题描述

代码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 具有相同功能的内联函数。 它使您可以使用安全调用(?.)而不是非null断言(!!):

fun selectAllIDs() {
    listVoiceBySort.value?.forEach {
        selectedIDs.add(it.id)
    }
}

另一种方法是将MVoice元素映射到其ID,然后将它们全部添加到selectedIDs

fun selectAllIDs() {
    listVoiceBySort.value?.map { it.id }?.let {
        selectedIDs.addAll(it)
    }
}
,

通常,通过获取非空值的观察者访问livedata中的数据

conversation ID

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...