Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 索引1超出范围[0..1)图像_Android_Json_Kotlin_Picasso_Okhttp - Fatal编程技术网

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

Android 索引1超出范围[0..1)图像,android,json,kotlin,picasso,okhttp,Android,Json,Kotlin,Picasso,Okhttp,我正在尝试从json获取图像并将其加载到xml中。我已经获取了图像url,只需加载它。但是每当我尝试加载图像时,它总是显示索引1超出范围[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 =

我正在尝试从json获取图像并将其加载到xml中。我已经获取了图像url,只需加载它。但是每当我尝试加载图像时,它总是显示
索引1超出范围[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替换
0..jsonArray.length()

使用
0..jsonArray.length()-1
0直到jsonArray.length()

数组索引是从零开始的,因此最后一个元素的索引等于
jsonArray.length()-1

使用
0直到jsonArray.length()
时,排除最后一个值
jsonArray.length()

如果数组只有1个元素,则for循环应该只执行一次。


编辑:对于这种情况,这是一个非常有用的链接

替换
0..jsonArray.length()

使用
0..jsonArray.length()-1
0直到jsonArray.length()

数组索引是从零开始的,因此最后一个元素的索引等于
jsonArray.length()-1

使用
0直到jsonArray.length()
时,排除最后一个值
jsonArray.length()

如果数组只有1个元素,则for循环应该只执行一次。


编辑:这是本案例的一个非常有用的链接

非常感谢您的帮助。我认为
和直到都是一样的。我认为和直到都是一样的