J'ai deux liste dans Kotlin, de la même taille, foodObjects: MutableList<ParseObject>?
et checked: MutableList<Boolean>?
. Je dois faire un cycle et obtenir l'objectId de foodObjects
chaque fois qu'un élément de checked
est vrai. Il est donc cela en Java:IndexOutOfBoundsException pour for-loop dans Kotlin
for(int i = 0; i< foodObjects.size(); i++) {
//here
}
mais Kotlin, je ne sais pas pourquoi, il y a quelques problèmes. En fait, si je fais ceci:
for(i in 0..foodObjects!!.size)
{
if (checked?.get(i) == true) {
objectsId?.add(foodObjects.get(i).objectId)
}
}
J'ai IndexOutOfBoundsException
: Je ne sais pas pourquoi, il continue le cycle aussi foodObjects.size
. Je pourrais le faire aussi avec filtre et carte:
(0..foodObjects!!.size)
.filter { checked?.get(it) == true }
.forEach { objectsId?.add(foodObjects.get(it).objectId) }
mais je donne la même erreur. Je dois l'arrêter en utilisant si:
for(i in 0..foodObjects!!.size)
{
if(i < foodObjects.size) {
if (checked?.get(i) == true) {
objectsId?.add(foodObjects.get(i).objectId)
}
}
}
pour que cela fonctionne.
Tout le monde pourrait me dire pourquoi dans Kotlin je dois le faire, quand en Java cela fonctionne bien?
merci, j'ai pensé que c'était similaire à Java, maintenant j'ai compris! – ste9206
désolé pour ma question, mais comment utiliser cette structure dans un recyclerview? J'ai trouvé le même problème – ste9206
Je ne suis pas sûr de ce que votre problème est en ce qui concerne un RecyclerView, mais vous devriez le poster comme une nouvelle question. – zsmb13