从 url 获取图标和从 drawable 获取图标它仅从 drawable 获取

Getting icon from url and icon from drawable it is taking only from drawable

我在 drawable 中添加了一些手动图标,对于某些手动数据,它必须使用 drawable,如果图标不在 drawable 中,则从 Glide.

我试过类似的东西,但只有它从 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);
            }
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

您需要在 context.getResources().getIdentifier()[= 中传递您的 arrayList.get(position).getIcon() 而不是 "icon" 18=]

另请阅读 getIdentifier() 的工作原理

Return a resource identifier for the given resource name. A fully qualified resource name is of the form "package:type/entry".

Returns : int The associated resource identifier. Returns 0 if no such resource was found. (0 is not a valid resource ID.)

试试这个方法

    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);
    }