PDA

Ver la Versión Completa : cambiar imagenview en tiempo de ejecución


Capitan Kirk
28/03/12, 20:40:31
Tengo una imagen definida en el xml como:

<ImageView
android:id="@+id/icono"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/perro"
/>

y funciona perfectamente, muestra la imagen "perro" que se encuentra en la carpeta "drawable".

Pero, ¿como la modifico en tiempo de ejecución mediante java?

lo he intentado con:

ImageView imagen = (ImageView) findViewById(R.id.icono);
imagen.setImageBitmap ("@drawable/"+parametro);

la variable "parametro" contiene el valor "perro"

pero da error, me dice "The method setImageBitmap(Bitmap) in the type ImageView is not applicable for the arguments (String)"

entonces, ¿como lo haría?

kriogeN
28/03/12, 23:36:12
Para obtener el R.drawable.XXXX por su nombre a partir de un string necesitas hacer esto:

int res_imagen = context.getResources().getIdentifier("drawable/" + nombreImagen, null, context.getPackageName());

Y para asginarla:

imagen.setImageResource(res_imagen);

Capitan Kirk
29/03/12, 18:11:22
Hola kriogeN gracias por responder.

el caso es que no me termina de funcionar tu ejemplo, en la linea:

int res_imagen = context.getResources().getIdentifier("drawable/" + nombreImagen, null, context.getPackageName());

me da el error:

"Multiple markers at this line
- context cannot be resolved
- context cannot be resolved"

además de marcarme en rojo los 2 "context"

ya prové a añadir un: "import android.content.Context;" pero nada, el error sigue saliendo.
Si me puedes ayudar te lo agradecería.

kriogeN
29/03/12, 21:38:38
Prueba con el nombre de tu Activity.this en lugar de context.

Es decir, si tu Activity se llama CambiaImagen en lugar de "context" pon "CambiaImagen.this"

Capitan Kirk
30/03/12, 12:36:33
Si, asi funciona, muchas gracias, me has ayudado mucho.