代码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)
    }
}

07-27 16:49