2011-10-29 9 views

Respuesta

11

¿Has declarado el id de la imagen en un archivo XML? Si lo hizo, puede usar el siguiente método:

Digamos que tiene picture.png en su carpeta res/dibujable.

En su actividad, se puede establecer el recurso de imagen en el archivo main.xml

<ImageView android:id="@+id/imageId" android:src="@drawable/picture"></ImageView> 

En FirstActivity

//to retrieve image using id set in xml. 
String imageString = "imageId" 
int resID = getResources().getIdentifier(imageString , "id", "package.name"); 
ImageView image = (ImageView) findViewById(resID); 

imagestring es el nombre dinámico. Después de lo cual puede obtener el identificador del recurso dinámico.

Otro método, usted puede hacer esto:

//to retrieve image in res/drawable and set image in ImageView 
String imageName = "picture" 
int resID = getResources().getIdentifier(imageName, "drawable", "package.name"); 
ImageView image; 
image.setImageResource(resID); 

usted será capaz de hacer referencia a su recurso de imagen y establecer su ImageView a ella.

+0

Gracias, para que este método funcione, necesitaría declarar la imagen en el archivo AndroidManifest.xml, ¿o hay otro archivo? No pude encontrar buena información sobre esto, pero estoy buscando lo incorrecto. – Hoofamon

+0

He editado mi ejemplo. Se agregaron 2 formas de recuperar las imágenes. Uno es dinámicamente a través de la identificación en XML utilizado para su actividad. El otro dinámicamente desde la carpeta 'res/drawable'. No necesita declarar imágenes en AndroidManifest.xml. – newbie

+0

necesita reformular ... Un método es recuperar dinámicamente la imagen. El otro es establecer la imagen. No estoy seguro de cuál estás tratando de hacer – newbie

8
int drawableId = getResources().getIdentifier(drawablename, "drawable", getPackageName()); 
imageview.setImageResource(drawableId); 

Prueba esto. Esto debería funcionar.

+1

¿Qué sucede si tengo que elegir la imagen de la carpeta según la pantalla, es decir, hdpi, xhdpi, xxhdpi? –

1
Class res = R.string.class; 
Field field = res.getField("x" + pos); 
headerId = field.getInt(null); 
header.setText(headerId); 

esto también funciona con elementos arrastrables, simplemente edite la cadena. la parte del encabezado no es necesaria, es solo un ejemplo extraído de algo que escribí hace un tiempo.

Cuestiones relacionadas