【发布时间】:2022-01-24 03:58:04
【问题描述】:
SnapshotStateList 的文档指出它类似于常规的可变列表。我有一个用例,我需要修改列表中的所有元素 (set case)。这不会改变列表的大小,但我遇到了 ConcurrentModificationException。
我在这里创建了一个非常简化的用例版本。以下 kotlin 列表可以正常工作:
val myList2 = mutableListOf("a", "b", "c")
myList2.forEachIndexed { index, _ ->
// Modify item at index
myList2[index] = "x"
}
但我在这里得到一个并发修改异常:
val myList = mutableStateListOf("a", "b", "c")
myList.forEachIndexed { index, _ ->
// Modify item at index but I get an exception
myList[index] = "x"
}
如何修改mutableStateList()的所有元素而不出现并发修改异常?
编辑:
我可以创建一个mutableStateList 的副本来迭代它可以正常工作,但由于我没有更改列表的大小,是否可以原地执行?
【问题讨论】:
-
不,我已经看过这个问题,它处理了对我来说很好的删除案例。我需要处理
set的情况,而iterator没有设置方法。
标签: android kotlin concurrentmodification