索引1超出范围[0..1)图像

时间:2018-11-02 15:11:45

标签: android json picasso okhttp okhttp3

我正在尝试从json获取图像并将其加载到xml中。而且我已经获取了图片网址,只需要加载即可。但是每当我尝试加载图像时,它总是显示Index 1 out of range [0..1)错误消息,但我不知道为什么会发生。

这是我的代码

val url = "https://www.thesportsdb.com/api/v1/json/1/lookupteam.php?id=133616"
    val request = Request.Builder().url(url).build()
    val client = OkHttpClient()
    client.newCall(request).enqueue(object : Callback, okhttp3.Callback {
        override fun onFailure(call: Call, e: IOException) {
            println("failed")
        }

        override fun onResponse(call: okhttp3.Call?, response: okhttp3.Response?) {
            val body = response?.body()?.string()
            println(body)
            val jsonObject = JSONObject(body)
            val jsonArray = jsonObject.getJSONArray("teams")
            for (i in 0..jsonArray.length()) {
                val jsonObject2 = jsonArray.getJSONObject(i)
                val lambang = jsonObject2.getString("strTeamBadge")
                Log.v("lambang", "" + lambang)
                Picasso.get().load(lambang).into(badge_away)
            }
        }
    })

,当我将for更改为while(i<jsonArray.length()时,它会不停地反复加载图像。 请,如果您知道如何解决此问题,请帮助

ps:我的jsonArray实际上只有1个索引

1 个答案:

答案 0 :(得分:3)

替换0..jsonArray.length()
0..jsonArray.length()-10 until jsonArray.length()一起
数组索引从零开始,因此最后一个元素的索引等于jsonArray.length()-1
使用0 until jsonArray.length()时,最后一个值jsonArray.length()被排除。
如果数组只有1个元素,则for循环应仅执行一次。

编辑:对于这种情况,Kotlin Ranges

这是一个非常有用的链接