2011-04-22 15 views
5
iv.setImageResource(R.drawable.icon); 

questa linea sta lavorando bene per meAndroid: variabile passata per R.drawable.variableValue

posso passare un valore variabile, invece di un'icona come se ho 10 immagini in drawable e voglio decidere il runtime quale immagine mostrare can i passare il valore attraverso una variabile e lavorarlo come

String variableValue = imageName; 
    iv.setImageResource(R.drawable.variableValue); 

risposta

4

si potrebbe utilizzare un array per definire i drawable:

int[] images = new int[2]; 
images[0] = R.drawables.image1; 
images[1] = R.drawables.image2; 

E quindi è possibile utilizzare questa matrice per impostare un'immagine in fase di esecuzione:

lv.setImageResource(images[i]); 

Dove si è in questo caso sia 0 per scegliere la prima immagine o 1 per scegliere la seconda immagine della matrice .

+0

lavorato come fascino ... :) awsome ... Grazie per aver reso la vita più facile, piuttosto portare più complicazioni in qualcosa che è già complicata (almeno per me). –

+0

Secondo me funziona solo con R.drawable invece di R.drawables –

0

No, non funzionerà in questo modo.

Nella vostra prima linea icon è un generato static final membro della static final class R.drawable modo da cercare di concatenare in su come se fosse un String darebbe un errore di compilazione.

Ma si potrebbe provare a utilizzare

iv.setImageURI(uri); 

dove uri è l'URI per la vostra immagine, in modo da poter utilizzare un valore stringa qui.
Inoltre, secondo la documentazione di api, sarebbe una soluzione migliore per utilizzare setImageBitmap: dovresti considerarlo in base alle tue risorse.

apidocs:

public void setImageURI (Uri uri) 

Dal: Livello API 1

imposta il contenuto di questo ImageView al Uri specificato.

Questo fa leggere e decodificare Bitmap sul thread dell'interfaccia utente, che può causare una latenza di latenza. Se questo è un problema, considerare utilizzando setImageDrawable (Drawable) o setImageBitmap (Bitmap) e BitmapFactory.

Parametri
uri L'Uri di un'immagine

16

Resources.getIdentifier() può risolvere il problema.

String variableValue = imageName; 
iv.setImageResource(getResources().getIdentifier(variableValue, "drawable", getPackageName())); 
+0

Grazie per aver lavorato per me. –

Problemi correlati