我是Kotlin的新用户,我想更新列表中的项目。
我使用以下代码:
var index: Int
for (record in recordList)
if (record.id == updatedHeader?.id) {
index = recordList.indexOf(record)
recordList.add(index, updatedHeader)
}
但由于
ConcurrentModificationException
,它无法执行此操作 最佳答案
假设recordList
是MutableList
和val
(因此,您想在适当的位置修改记录),则可以使用forEachIndexed
查找所需的记录并替换它们。
这没有引起ConcurrentModificationException
:
recordList.forEachIndexed { index, record ->
if(record.id == updatedHeader?.id) recordList[index] = updatedHeader
}
另一方面,如果将
recordList
重新定义为一个非可变列表和一个var,则可以使用map
重写整个列表:recordList = recordList.map { if(it.id == updatedHeader?.id) updatedHeader else it }
当然,如果您想将
.toMutableList()
转换为List
,则可以在结尾处调用MutableList
。关于collections - 如何在特定索引中添加新项目?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50321991/