Получение значка из URL-адреса и значка из Drawable это только из Drawable - PullRequest
0 голосов
/ 07 февраля 2019

Я добавил несколько значков вручную в drawable, которые для некоторых данных вручную должны принимать drawable, а если значок не находится в drawable, то взять его из Glide.

* 1006.* Я пробовал что-то подобное до сих пор, но только он получает значки от drawable.

Я хочу проверить, существует ли значок на drawable, взять и если для URL-адреса значок не отображаетсязатем перейдите к другому утверждению и возьмите его из Glide.

Ниже приведен мой код.
ResID всегда равен 0

String imageUrl = BASE_URL + arrayList.get(position).getSearchUrl() + "&size=32";

            int resID = context.getResources().getIdentifier("icon", "drawable",context.getPackageName());
            if (resID == 0) {
                Log.d("TAG", "onBindViewHolder: " + resID);
                viewHolder.tvIcon.setImageResource(arrayList.get(position).getIcon());
            } else {
                Log.d("TAG", "onBindViewHolder: Glide" + resID);
                Glide.with(context)
                        .load(imageUrl)
                        .apply(requestOptions
                                .placeholder(R.drawable.default_favicon)
                                .diskCacheStrategy(DiskCacheStrategy.ALL)
                                .fitCenter())
                        .into(viewHolder.tvIcon);
            }

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Вам необходимо передать arrayList.get(position).getIcon() вместо "icon" в context.getResources().getIdentifier()

Также прочитайте, как getIdentifier() работает

Возвращает идентификатор ресурса для данного имени ресурса.Полное имя ресурса имеет форму «пакет: тип / запись».

Returns: int Идентификатор связанного ресурса. Возвращает 0, если такой ресурс не был найден.(0 не является действительным идентификатором ресурса.)

Попробуйте следующим образом

    int resID = context.getResources().getIdentifier(String.valueOf(arrayList.get(position).getIcon()), "drawable",context.getPackageName()); "drawable",context.getPackageName());
    // if resID == 0 means the icon is not available in drawable folder
    // so it will load icon from url using Glide
    if (resID == 0) {
        Log.d("TAG", "onBindViewHolder: Glide" + resID);
        Glide.with(context)
                .load(imageUrl)
                .apply(requestOptions
                        .placeholder(R.drawable.default_favicon)
                        .diskCacheStrategy(DiskCacheStrategy.ALL)
                        .fitCenter())
                .into(viewHolder.tvIcon);

    }
    // if resID != 0 means the icon is  available in drawable folder
    // so it will load icon from drawable folder
    else {
        Log.d("TAG", "onBindViewHolder: " + resID);
        viewHolder.tvIcon.setImageResource(resID);
    } 
0 голосов
/ 07 февраля 2019
int checkExistence = mContext.getResources().getIdentifier("my_resource_name", "drawable", mContext.getPackageName());

if ( `checkExistence != 0` ) {  // the resouce exists...
result = true;
}
else {  // checkExistence == 0  // the resouce does NOT exist!!
result = false;}

вы используете resID == 0 использование не равно нулю. checkExistence != 0

...