Android kotlin - добавить в массив <JSONObject>/ JSONArray вызывает исключение ArrayIndexOutOfBoundsException - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь преобразовать mutablelist в jsonarray, чтобы иметь возможность отправить его к следующему действию, поскольку кажется невозможным просто передать этот чертов mutablelist без добавления какого-либо плагина сериализации

Это то, что у меня так далеко:

val arrr: Array<JSONObject> = arrayOf()
                var curr = 0
                for(jsonIndex in 0 until memes.size - 1) {
                    val rootObject = JSONObject()
                    rootObject.put("nickname", memes[jsonIndex].nickname)
                    rootObject.put("title",memes[jsonIndex].title)

                    arrr[curr] = rootObject
                    curr++
                }

Я получаю сообщение об ошибке:

ArrayIndexOutOfBoundsException: length=0; index=0

ссылается на строку

arrr[curr] = rootObject

Что здесь не так?

1 Ответ

1 голос
/ 05 марта 2020

Когда вы создаете экземпляр массива, он имеет фиксированный размер, навсегда (хотя, если это var, вы можете назначить новый, больший массив переменной). Если вы хотите что-то, что может расти по мере необходимости, используйте MutableList. Но даже со списком нельзя перейти к индексу, который еще не был создан. Вместо этого вы используете функцию add:

val arrr: MutableList<JSONObject> = mutableListOf()

//...

for(jsonIndex in 0 until memes.size - 1) {
    val rootObject = JSONObject()
    rootObject.put("nickname", memes[jsonIndex].nickname)
    rootObject.put("title",memes[jsonIndex].title)

    arrr.add(rootObject)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...