В моем приложении есть что-то вроде прикрепления файлов к сообщениям. Эти прикрепленные файлы отображаются в RecyclerView с адаптером. Каждый элемент RV имеет свой собственный btn для его удаления. Проблема в том, что у меня в списке есть два элемента, и я пытаюсь удалить 1 элемент, а не 2, я получаю сообщение об ошибке. Но когда я пытаюсь удалить 2-й элемент, а затем 1-й, все в порядке. Я использовал отладчик и смог найти проблемную строку, но я не знаю, как решить эту проблему. Итак, вот код из адаптера для удаления элемента из списка:
val array = Singleton.array
if (array!!.size() > 0) {
for (i in 0 until array.size()) {
val obj = array.get(i).asJsonObject
if (obj.get("filename").toString().substring(1, obj.get("filename").toString().length - 1) == mNames[position]) {
array.remove(obj)
mNames.removeAt(position)
Singleton.array = array
updateNames(mNames)
}
}
}
У меня проблема в этой строке:
val obj = array.get(i).asJsonObject
Я проверил через логгер эту переменную, и все вроде бы нормально, я могу получить значение с индексом 0. Тогда я подумал, что проблема в том, где я отправляю данные на адаптер, но все в порядке. Я использовал отладчик и увидел, что метод getAsJsonObject () выдает это исключение:
почему это происходит и как я могу решить эту ошибку. Я пытался изменить это:
for (i in 0 until array.size())
к этому for (i in 0 until array.size()-1)
и это не сработало. Затем я попытался изменить этот цикл на for (i in 1 until array.size())
, и это тоже не помогло. Итак, где я допустил ошибку и как я могу предотвратить эту проблему в будущем?
P.S. Извините за прикрепление скриншота отладчика, потому что я не смог получить от него текстовые данные.