Я пытаюсь получить изображение из json и загрузить его в xml. и я уже получил URL-адрес изображения, и мне просто нужно его загрузить. но всякий раз, когда я пытаюсь загрузить изображение, он всегда показывает сообщение об ошибке 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 индекс
Заменить 0..jsonArray.length()
с 0..jsonArray.length()-1 или 0 until jsonArray.length()
индексы массива отсчитываются от нуля, поэтому последний элемент имеет индекс, равный jsonArray.length()-1.
При использовании 0 until jsonArray.length() последнее значение jsonArray.length() исключается.
Если в массиве всего 1 элемент, цикл for должен выполняться только один раз.
Редактировать: это очень полезная ссылка на этот случай Котлин хребты
спасибо большое, это работает. Я думаю, что
..иuntilэто одно и то же