首页 > 解决方案 > Android kotlin - 添加到数组/ JSONArray 导致 ArrayIndexOutOfBoundsException

问题描述

我正在尝试将 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

这里有什么问题?

标签: androidarraysjsonkotlin

解决方案


当你实例化一个 Array 时,它永远有一个固定的大小(尽管如果它是一个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)
}

推荐阅读