2010-11-23 12 views
5

Tengo esta base de datos de más de 100 imágenes (de banderas del país) en mi carpeta dibujable.Cargue dinámicamente la imagen en ImageView en Android

Ahora quiero mostrar la bandera del país en el que se encuentra actualmente, en un ImageView.

recibo el país con String country_variable = address.getCountryCode();

Y volví la imagen con flag.setImageDrawable(getResources().getDrawable(R.drawable.country_variable));

Como todos saben el trabajo hace ningún R.drawable.country_variable porque el compilador no puede encontrar una imagen con el nombre de country_variable la carpeta dibujable

¿Cuál es la mejor manera de hacerlo?

+0

¿por qué no nombra cada dibujable con su código de país? y usa un hashmap. – techiServices

+0

Lo hice. Las banderas se llaman "fr.png", "de.png", "uk.png", etc. – Galip

+0

no me explicaron correctamente, lo siento. hashmap donde int es el R.drawable. techiServices

Respuesta

12

usted debería ser capaz de utilizar getResources() getIdentifier() para obtener el id por el nombre del recurso.. Algo como:

flag.setImageDrawable(getResources().getDrawable(getResources().getIdentifier("drawable/" + country_variable, "drawable", getPackageName())); 
+1

Tnx! ¡Funciona! tuvo que agregar .toLowerCase(); aunque. getCountryCode() devuelve dos letras mayúsculas y Android no permite nombres de archivo en mayúsculas en el mapa dibujable. – Galip

6

Prueba esto:

flag.setImageDrawable(getResources().getDrawable(getResources().getIdentifier(country_variable, "drawable", getPackageName())); 
+1

Tnx! ¡Funciona! tuvo que agregar .toLowerCase(); aunque. getCountryCode() devuelve dos letras mayúsculas y Android no permite nombres de archivo en mayúsculas en el mapa dibujable. – Galip

+0

Me alegro de que funcionó para usted :) – xil3

Cuestiones relacionadas