Я пытаюсь загрузить изображение из Drawable, и оно не показывает изображение в представлении изображений.

У меня есть 700 изображений в Drawable, и у меня есть список имен изображений, и мне нужно программно загрузить его в представление изображений
Изображение находится в формате webp и менее 100 КБ
изображения в представлении ресайклера

где находится неправильный

Java-код

Drawable drawable = mContext.getResources().getDrawable(mContext.getResources().getIdentifier(mData.get(position).getImage(), "drawable", mContext.getPackageName()));             
    holder.image.setImageDrawable(drawable);

Макет

<ImageView
                android:id="@+id/fish_image"
                android:layout_width="match_parent"
                android:scaleType="fitXY"
                android:minWidth="100dp"
                android:minHeight="100dp"
                android:background="#ffffff"
                android:layout_height="wrap_content"
                />


У меня есть 700 изображений в Drawable, и у меня есть список имен изображений, и мне нужно программно загрузить их в представление изображений. Есть ли какое-либо другое решение?

Обновите, это сработало
я переместил изображение в папку Assets и загрузил его оттуда

try {
            // get input stream
            InputStream ims = mContext.getAssets().open(mData.get(position).getImagename()+".webp");
            // load image as Drawable
            Drawable d = Drawable.createFromStream(ims, null);
            // set image to ImageView
            holder.image.setImageDrawable(d);
            ims .close();
        }
        catch(IOException ex)
        {
            Log.e("image_io",ex.getMessage()+"");
           // return;
        }

person Midhilaj    schedule 12.08.2018    source источник
comment
Пожалуйста, поделитесь высотой и шириной изображения   -  person Sushant Somani    schedule 12.08.2018
comment
у меня есть 700 изображений в Drawable, и у меня есть список имен изображений, и мне нужно программно загрузить его в представление изображений   -  person Midhilaj    schedule 12.08.2018
comment
Как использовать setImageResource()?   -  person Midhilaj    schedule 12.08.2018
comment
Что getIdentifier() там возвращает? Что возвращает getImage()? У вас действительно есть доступный ресурс с таким именем, применимый к текущей конфигурации? Что произойдет, если вы временно используете значение R.drawable? Если на то пошло, почему бы вам просто не использовать значения R.drawable в вашей модели данных для начала?   -  person Mike M.    schedule 12.08.2018
comment
Пример возвращаемой строки getImage() Malawi_shell_dweller   -  person Midhilaj    schedule 12.08.2018


Ответы (2)


Вы должны использовать имя чертежа как строку, а не getImageuri():

Drawable drawable = mContext.getResources().getDrawable(mContext.getResources().getIdentifier("drawable_name", "drawable", mContext.getPackageName()));
person Community    schedule 12.08.2018
comment
URI изображения — это строка - person Midhilaj; 12.08.2018
comment
Зачем вам нужен uri для изображений в папке с возможностью рисования? - person ; 12.08.2018
comment
Является ли getImageuri().toString() просто именем чертежа или нет? Проверь это. - person ; 12.08.2018
comment
У меня есть 700 изображений в Drawable, и у меня есть список имен изображений, и мне нужно программно загрузить его в представление изображения. Есть ли какое-либо другое решение? - person Midhilaj; 12.08.2018
comment
getImageuri() возвращает имя изображения, например Malawi_shell_dweller - person Midhilaj; 12.08.2018
comment
В этом коде, где мне нужно добавить имя изображения?‹br› Drawable drawable = mContext.getResources(). ‹br› - person Midhilaj; 12.08.2018
comment
замените drawable_name на имя чертежа - person ; 12.08.2018
comment
@Midhilaj 700 изображений? поэтому добавьте их в папку с ресурсами и используйте android.content.res.AssetManager для их добавления в свое приложение. - person pskink; 12.08.2018
comment
@Midhilaj ты читал AssetManager документы? если да, то что непонятно? - person pskink; 12.08.2018
comment
теперь я пытаюсь использовать этот код‹br› stackoverflow.com/a/11734850/4650969 - person Midhilaj; 12.08.2018
comment
но не просыпаюсь. - person Midhilaj; 12.08.2018
comment
@Midhilaj Попробуйте использовать только одно имя для рисования. Если это не поможет, то проблема в другом - person ; 12.08.2018
comment
@Midhilaj что такое "not working"? InputStream ims нуль или что? - person pskink; 12.08.2018
comment
@Midhilaj и, конечно же, кэшируйте эти Drawable в некоторых HashMap<String, Drawable>, чтобы вы вызывали Drawable.createFromStream только один раз для данного имени - person pskink; 12.08.2018

Uri uri_for_drawable = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE +
                "://" + getResources().getResourcePackageName(R.drawable.your_image_name)
                + '/' + getResources().getResourceTypeName(R.drawable.your_image_name) + '/' + getResources().getResourceEntryName(R.drawable.your_image_name) );

Используйте приведенный выше код, чтобы получить uri изображения из папки с возможностью рисования.

person Gourango Sutradhar    schedule 12.08.2018