6 ответов:
Если вам действительно нужно работать со строкой, попробуйте что-то вроде этого:
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); }еще я бы рекомендовал вам работать с R. * ссылки, как это:
int imageResource = R.drawable.icon; Drawable image = getResources().getDrawable(imageResource);
во-первых, не делайте этого, так что
@drawableсинтаксис не имеет смысла в Java-код. Используйтеint resourceId=R.drawable.myresource.если по какой-то причине вы заводите имя ресурса и вам нужен целочисленный идентификатор, используйте
getIdentifier()наResources"объект".
вы также можете добавить свои собственные переменные.. в моем случае scene.name между тем я следил за ответами @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; ... ...
Comments