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

问题描述 投票:6回答:2

我已经为drawable添加了一些手动图标,对于一些手动数据,它必须采取drawable,如果图标不在drawable,那么从Glide获取它。

我尝试了类似的东西直到现在,但只有它从drawable获得图标。

我想检查drawable上是否存在图标,如果对于网址,图标不是可绘制的,那么请转到另一个语句并从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);
            }
android android-adapter android-glide
2个回答
2
投票

你需要在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
投票
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使用不等于zero.checkExistence != 0

© www.soinside.com 2019 - 2024. All rights reserved.