Я чешу голову здесь, пытаясь понять, почему я получаю ConcurrentModificationException
здесь ...
Это мой код:
var adapterCurrentList : PagedList<WorkPackagesQuery.WorkPackage>? = null
val workPackagesArrayList = arrayListOf<WorkPackagesQuery.WorkPackage>()
fun turnPagedListIntoArrayList(searchString: String) {
workPackagesArrayList.clear()
val tempCurrentArray = Collections.synchronizedList(adapterCurrentList)
synchronized(tempCurrentArray) {
for ((index, workPackage) in tempCurrentArray.withIndex()) { //exception is thrown here.
if (workPackage.id().contains(searchString)) {
workPackagesArrayList.add(workPackage)
}
}
}
}
Чего мне не хватает? Я не изменяю tempCurrentArray
, перебирая его ... Первый раз, с searchString
, он работает нормально, второй раз, с другим searchString
, выдает исключение.
Вот трассировка стека:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.bechtel.pf.mock, PID: 18686
java.util.ConcurrentModificationException
at java.util.ArrayList$SubList.size(ArrayList.java:1057)
at androidx.paging.PagedStorage.get(PagedStorage.java:170)
at androidx.paging.PagedList.get(PagedList.java:410)
at java.util.AbstractList$Itr.next(AbstractList.java:358)
at com.bechtel.pf.ui.workpackages.WorkPackagesViewModel.turnPagedListIntoArrayList(WorkPackagesViewModel.kt:48)
at com.bechtel.pf.ui.workpackages.WorkPackagesViewModel.pareDownArrayForSearch(WorkPackagesViewModel.kt:59)
at com.bechtel.pf.ui.workpackages.WorkPackagesFragment$onCreateView$$inlined$addTextChangedListener$1.afterTextChanged(TextView.kt:101)