Как установить изображение imageView из строки? - PullRequest
31 голосов
/ 10 марта 2011

У меня есть список записей и некоторые растровые файлы в каталоге res / drawable-mdpi.Я пытаюсь загрузить изображение, соответствующее строковому значению, выбранному из списка, генерируя строку пути и используя фабрику растровых изображений.Проблема в том, что я не думаю, что мой путь правильный, потому что растровое изображение всегда пустое, даже для изображения по умолчанию.

String name = entries.get(position);
            String img = "res/drawable/logo_" + name.toLowerCase() + ".png"; // create the file name
            icon.setScaleType(ImageView.ScaleType.CENTER_CROP);

            // check to see if the file exists
            File file = new File(img);
            if (file.exists()){

                bm = BitmapFactory.decodeFile(img);
            }
            else{// use the default icon
                bm = BitmapFactory.decodeFile("logo_default.png");
            }

            // set the image and text
            icon.setImageBitmap(bm);

Копируется ли каталог res на устройство?Какой правильный путь я должен использовать, или я должен поступить по-другому?

Спасибо

Ответы [ 4 ]

50 голосов
/ 10 марта 2011

если у вас есть изображение в папке для рисования, вы делаете это неправильно.

попробуйте что-то вроде этого

Resources res = getResources();
String mDrawableName = "logo_default";
int resID = res.getIdentifier(mDrawableName , "drawable", getPackageName());
Drawable drawable = res.getDrawable(resID );
icon.setImageDrawable(drawable );
17 голосов
/ 29 декабря 2015

Нет необходимости использовать getDrawable (), вы напрямую используете идентификатор ресурса, например

String mDrawableName = "myimageName"; int resID = res.getIdentifier(mDrawableName , "drawable", getPackageName()); imgView.setImageResource(resID);

0 голосов
/ 14 ноября 2018
ImageView img = (ImageView) findViewById(R.id.{ImageView id});
img.setImageResource(getResources().getIdentifier("ImageName","drawable",getPackageName()));
0 голосов
/ 01 мая 2018

Вы можете создать общую функцию для получения изображения для рисования следующим образом:

public static Drawable getDrawable(Context mContext, String name) {
        int resourceId = mContext.getResources().getIdentifier(name, "drawable", mContext.getPackageName());
        return mContext.getResources().getDrawable(resourceId);
    }
...