我是Kotlin的新用户,我想更新列表中的项目。
我使用以下代码:

var index: Int
    for (record in recordList)
        if (record.id == updatedHeader?.id) {
            index = recordList.indexOf(record)
            recordList.add(index, updatedHeader)
        }

但由于ConcurrentModificationException,它无法执行此操作

最佳答案

假设recordListMutableListval(因此,您想在适当的位置修改记录),则可以使用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/

10-13 03:06