简体   繁体   中英

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

I have added some manually icons to drawable which for some manually data it have to take the drawable and if a icon is not in drawable then take it from the Glide .

I tried something like till now but only it is getting the icons from drawable .

I want to check if icon exists at drawable take from there and if for an url the icon is not in drawable then go at another statement and take it from Glide .

Below is my code.
The resID is always 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);
            }

You need to pass your arrayList.get(position).getIcon() instead of "icon" in context.getResources().getIdentifier()

Also read how getIdentifier() works

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.)

Try this way

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

you are using resID == 0 use not equal to zero. checkExistence != 0

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM