从URL获取图标和从drawable获取图标仅从drawable获取

时间:2019-02-07 09:53:40

标签: android android-adapter android-glide

我在drawable中添加了一些手动图标,对于某些手动数据,它必须使用drawable,如果drawable中没有图标,则从{{1 }}。

直到现在我都尝试过类似的方法,但只是它是从Glide获取图标。

我想检查drawable处的图标是否存在,如果不是网址,则无法绘制该图标,然后转到另一条语句并从drawable处获取。

下面是我的代码。
resID始终为0

Glide

2 个答案:

答案 0 :(得分:2)

您需要通过{strong> arrayList.get(position).getIcon() ,而不是"icon"

中的 context.getResources().getIdentifier()

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

  

返回给定资源名称的资源标识符。完全限定的资源名称的格式为“ package:type / entry”。

     

Returns :       int关联的资源标识符。 如果未找到此类资源,则返回0。 (0不是有效的资源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);
    } 

答案 1 :(得分:1)

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