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
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"