Android – Abrir recurso de @drawable String

Yo tengo:

 String uri = "@ drawable / myresource.png";

¿Cómo puedo cargar eso en ImageView? this.setImageDrawable?

Si realmente necesita trabajar con una cadena, intente algo como esto:

private void showImage() { String uri = "drawable/icon"; // int imageResource = R.drawable.icon; int imageResource = getResources().getIdentifier(uri, null, getPackageName()); ImageView imageView = (ImageView) findViewById(R.id.myImageView); Drawable image = getResources().getDrawable(imageResource); imageView.setImageDrawable(image); } 

De lo contrario, le recomendaría que trabaje con R. * referencias como esta:

 int imageResource = R.drawable.icon; Drawable image = getResources().getDrawable(imageResource); 

Primero, no hagas eso, ya que @drawable syntax de @drawable tiene sentido en el código de Java. Use int resourceId=R.drawable.myresource .

Si por algún motivo termina un nombre de recurso y necesita la ID de número entero, use getIdentifier() en el objeto de Resources .

también puede agregar su propia variable … en mi caso scene.name entre yo seguí respuestas @pfleidi. c significa contexto.

 String uri = "drawable/" + scene.name; int imageResource = c.getResources().getIdentifier(uri, null, c.getPackageName()); imageList.setImageResource(imageResource); 

Hace mucho tiempo vencido, pero mi favorito es usar el contexto:

 context.getApplicationContext().getResources().getDrawable(R.drawable.placeholder_image) 

donde placeholder_image es la identificación del recurso. En tu caso, R.drawable.myresource .

El contexto puede ser una actividad o la aplicación. Prácticamente donde sea que esté, tiene referencia al contexto, que puede usar para obtener el contexto de la aplicación.

En caso de que alguien más se encuentre con el problema que tenía, estaba cargando el nombre de la imagen de JSON y luego necesitaba obtener el identificador. El segundo parámetro de getIdentifier se puede configurar como “dibujable”. Esta es una pequeña variación de @ alia-ramli-ramli respuesta …

 String uri = details.getString("circle").toLowerCase(); int imageResource = context.getResources().getIdentifier(uri, "drawable", context.getPackageName()); Drawable image = context.getResources().getDrawable(imageResource); viewHolder.unit_circle.setImageDrawable(image); 

Tuve el mismo problema con … el obsoleto etc., etc. Lo resolví de esa manera con un mínimo de API 14 bien.

 ... ... ImageView imgPoster = viewCache.getImgPoster(resource); String uri = "drawable/" + film.getPoster(); int imageResource = context.getResources().getIdentifier(uri, null, context.getPackageName()); Drawable image = ContextCompat.getDrawable(context, imageResource); imgPoster.setImageDrawable(image); return convertView; ... ...