У меня есть:
String uri = "@drawable/myresource.png";
Как я могу загрузить это в ImageView? this.setImageDrawable?
У меня есть:
String uri = "@drawable/myresource.png";
Как я могу загрузить это в ImageView? this.setImageDrawable?
Если вам действительно нужно работать со строкой, попробуйте что-то вроде этого:
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);
}
Else Я бы порекомендовал вам работать с R. * такими вот ссылками:
int imageResource = R.drawable.icon;
Drawable image = getResources().getDrawable(imageResource);
Во-первых, не делайте этого, так как синтаксис @drawable
не имеет смысла в Java-коде. Используйте int resourceId=R.drawable.myresource
.
Если по какой-то причине вы завершаете имя ресурса и вам нужен идентификатор целого числа, используйте getIdentifier()
для объекта Resources
.
вы также можете добавить свою собственную переменную.. в моем случае scene.name между я follow @pfleidi отвечает. c означает контекст.
String uri = "drawable/" + scene.name;
int imageResource = c.getResources().getIdentifier(uri, null, c.getPackageName());
imageList.setImageResource(imageResource);
Долгое время просрочено, но моим фаворитом является использование Контекста:
context.getApplicationContext().getResources().getDrawable(R.drawable.placeholder_image)
где placeholder_image - это идентификатор ресурса. В вашем случае R.drawable.myresource
.
Контекст может быть активностью или приложением. Практически везде, где вы находитесь, есть ссылка на контекст, который вы можете использовать для получения контекста приложения.
Если кто-то еще сталкивается с проблемой, которую я имел, я загружал имя изображения из JSON, а затем мне нужно было получить идентификатор. Второй параметр getIdentifier может быть установлен на "drawable". Это небольшое изменение в ответе @alia-ramli-ramli...
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);
У меня была такая же проблема с... устаревшим и т.д. и т.д. Я решил таким образом с минимальным API 14 в порядке.
...
...
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;
...
...