2017-10-12 14 views
0

Dans mon application Kotlin j'ai quelques ImageViews (en activity_main.xml): imageView_0, imageView_1, imageView_2 et imageView_3.ressource id android d'une chaîne

Comment puis-je accéder à la vue dans une boucle de 0 à 3? Cela ne fonctionnera pas:

val imageView: ImageView = findViewById<ImageView>("R.id.imageView_" + index) as ImageView 

Répondre

4
for(i in 1..3){ 
    val id: int=getResources().getIdentifier("imageview_"+i, "id", 
    getPackageName()) 
    imageview[i]=findViewById(id) as ImageView 
} 

Si vous avez dans le xml, imageview_1, imageview_2, imageview_3

0

J'ai fini par faire ceci:

var imageViews: Array<ImageView?> = arrayOfNulls(4) 

for (i in 0..3) { 
    val id: Int = getResources().getIdentifier("imageView_" + i, "id", getPackageName()) 
    imageViews.set(i, findViewById<ImageView>(id) as ImageView) 
} 
1

Une autre option permettant pour déclarer votre tableau avec non-nullable ImageView s:

val imageViews : Array<ImageView> = Array(4, { 
    val id: Int = resources.getIdentifier("imageView_" + it, "id", packageName) 
    findViewById<ImageView>(id) 
})