He:Android - recursos Abierto de cadena @drawable
String uri = "@drawable/myresource.png";
¿Cómo se puede cargar en el que ImageView? this.setImageDrawable?
He:Android - recursos Abierto de cadena @drawable
String uri = "@drawable/myresource.png";
¿Cómo se puede cargar en el que ImageView? this.setImageDrawable?
Si realmente necesita trabajar con una cadena, intentar 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);
}
otra cosa que le recomendaría a trabajar con R. * referencias como esta:
int imageResource = R.drawable.icon;
Drawable image = getResources().getDrawable(imageResource);
Primero, no hagas eso, ya que la sintaxis @drawable
no tiene sentido en el código Java. Use int resourceId=R.drawable.myresource
.
Si por alguna razón termina un nombre de recurso y necesita la ID entera, use getIdentifier()
en el objeto Resources
.
Desde hace mucho tiempo vencida, pero mi favorita es utilizar el Contexto:
context.getApplicationContext().getResources().getDrawable(R.drawable.placeholder_image)
donde placeholder_image es la identificación del recurso. En su 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.
La respuesta de pfleidi está accediendo al mismo método: las actividades son contextos, por lo que cuando llama a getResources(), usa la actividad actual como contexto para llegar al mismo lugar que tú. Editar: no exactamente igual, está llegando al contexto global de la Aplicación en lugar de usar el contexto de la Actividad (o Servicio) directamente. – MaximumGoat
también puede agregar su propia variable ... en mi caso scene.name entre seguí respuestas @pfleidi. c significa contexto.
String uri = "drawable/" + scene.name;
int imageResource = c.getResources().getIdentifier(uri, null, c.getPackageName());
imageList.setImageResource(imageResource);
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 el identificador. El segundo parámetro de getIdentifier se puede configurar como "dibujable". Esta es una ligera variación en otras cosas @-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 desuso ... etc etc He resuelto de tal manera con la API mínimo de 14 acuerdo .
...
...
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;
...
...
Estaba cargando el nombre de la imagen de algunos JSON, el URI no contenía "dibujables /" al principio y no recibía ningún recurso. En este caso, puede establecer el segundo parámetro como 'getIdentifier()' en "dibujable" – Flexicoder
tenga en cuenta al usarlo que el estudio de Android lo ve recurso no utilizado por lo que la opción "refactorizar/eliminar recursos no utilizados" no funciona – gturedi
Recuerde que debe no agregue la extensión de imagen al URI y debe agregar "dibujable /" al primero de URI –