从 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);
}
我在 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);
}