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