Android-открыть ресурс из @drawable String



Я:




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


Как я могу загрузить это в ImageView? этот.setImageDrawable?

372   6  

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

    Ничего не найдено.