Skip to content Skip to sidebar Skip to footer

Get Favicon From A Web And Save It To Declared Icon In A Pojo Class

I have a RecyclerViewAdapter which I have called MyAdapter and there I set for a Bookmark: ID, Name, Icon, SearchUrl. I am able to show all of them but for the icon it works only f

Solution 1:

You can use besticon

This is a favicon service:

  • Supports favicon.ico and apple-touch-icon.png

  • Simple URL API

  • Fallback icon generation

  • Docker image & single binary download for easy hosting

SAMPLE CODE HOW To use it

Layout

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/parentView"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="10dp"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><ImageViewandroid:id="@+id/stackIMG"android:layout_width="32dp"android:layout_height="32dp"android:layout_margin="10dp" /><ImageViewandroid:id="@+id/fbIMG"android:layout_width="32dp"android:layout_height="32dp"android:layout_margin="10dp" /><ImageViewandroid:id="@+id/twitterIMG"android:layout_width="32dp"android:layout_height="32dp"android:layout_margin="10dp" /></LinearLayout></LinearLayout>

Activity code

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;

publicclassMainActivityextendsAppCompatActivity {


    String stackOverFlowURL, FacebookURL, TwitterURL;
    StringBASE_URL="https://besticon-demo.herokuapp.com/icon?url=";


    ImageView stackIMG,fbIMG,twitterIMG;

    @OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        stackIMG = findViewById(R.id.stackIMG);
        fbIMG = findViewById(R.id.fbIMG);
        twitterIMG = findViewById(R.id.twitterIMG);


        stackOverFlowURL = BASE_URL + "https://stackoverflow.com/" + "&size=32;";
        FacebookURL = BASE_URL + "https://www.facebook.com/" + "&size=32;";
        TwitterURL = BASE_URL + "https://twitter.com" + "&size=32;";

        RequestOptionsrequestOptions=newRequestOptions();
        requestOptions.error(R.drawable.ic_fav);

        Glide.with(MainActivity.this)
                .load(stackOverFlowURL)
                .apply(requestOptions)
                .into(stackIMG);

        Glide.with(MainActivity.this)
                .load(FacebookURL)
                .apply(requestOptions)
                .into(fbIMG);


        Glide.with(MainActivity.this)
                .load(TwitterURL)
                .apply(requestOptions)
                .into(twitterIMG);
    }


}

OUTPUT

enter image description here

UPDATE

make below changes in your code

@OverridepublicvoidonBindViewHolder(@NonNull RecyclerView.ViewHolder holder, finalint position) {
    StringBASE_URL="https://besticon-demo.herokuapp.com/icon?url=";

    finalintitemType= getItemViewType(position);
    if (itemType == ITEM_TYPE_ONE) {
        finalViewHolderviewHolder= (ViewHolder) holder;

        viewHolder.tvName.setText(arrayList.get(position).getName());

        Glide.with(context)
                .load(BASE_URL+arrayList.get(position).getSearchUrl()+"&size=32;")
                .apply(requestOptions)
                .into(viewHolder.tvIcon);

        viewHolder.tvId.setText(arrayList.get(position).getId());
        viewHolder.tvSearchUrl.setText(arrayList.get(position).getSearchUrl());
        viewHolder.tvNativeUrl.setText(arrayList.get(position).getNativeUrl());
        viewHolder.tvIcon.setOnClickListener(newView.OnClickListener() {
            @OverridepublicvoidonClick(View v) {
                Intent intent;
                StringUrl= viewHolder.tvSearchUrl.getText().toString();
                StringName= viewHolder.tvName.getText().toString();
                intent = newIntent(context, BookmarkActivity.class);
                intent.putExtra("WebSearchUrl", Url);
                intent.putExtra("WebSearchName", Name);
                v.getContext().startActivity(intent);
            }
        });


        viewHolder.tvIcon.setOnLongClickListener(newView.OnLongClickListener() {
            @OverridepublicbooleanonLongClick(View v) {
                Intentintent=newIntent(context, ActivityChangeBookmark.class);
                StringUrl= viewHolder.tvSearchUrl.getText().toString();
                StringName= viewHolder.tvName.getText().toString();
                IntegerId= viewHolder.tvId.getId();
                Bundleextras=newBundle();
                viewHolder.tvIcon.buildDrawingCache();
                Bitmapimage= viewHolder.tvIcon.getDrawingCache();
                intent.putExtra("Url", Url);
                intent.putExtra("Name", Name);
                intent.putExtra("ID", Id);
                extras.putParcelable("Image", image);
                intent.putExtras(extras);
                v.getContext().startActivity(intent);
                returnfalse;
            }
        });

    } elseif (itemType == ITEM_TYPE_TWO) {
        ButtonViewHolderbuttonViewHolder= (ButtonViewHolder) holder;
        buttonViewHolder.imgButton.setImageResource(arrayList.get(position).getIcon());
    }

}

Solution 2:

Why are you using setText? This should work

URLurl=newURL(arrayList.get(position).getSearchUrl());
Bitmapbmp= BitmapFactory.decodeStream(url.openConnection().getInputStream());
imageView.setImageBitmap(bmp);

Post a Comment for "Get Favicon From A Web And Save It To Declared Icon In A Pojo Class"