Получить favicon из Интернета и сохранить его в объявленном Icon в классе Pojo

Java имеет пул строк, в котором Java управляет распределением памяти для объектов String. См. String Pools в Java

Когда вы проверяете (сравниваете) два объекта с помощью оператора ==, он сравнивает равенство адресов в пуле строк. Если два объекта String имеют одинаковые адреса, то он возвращает true, в противном случае false. Но если вы хотите сравнить содержимое двух объектов String, вы должны переопределить метод equals.

equals - фактически метод класса Object, но он переопределяется в класс String и дается новое определение, которое сравнивает содержимое объекта.

Example:
    stringObjectOne.equals(stringObjectTwo);

Но помните, что это относится к случаю String. Если вы хотите сравнить регистр без учета регистра, вы должны пойти для метода equalsIgnoreCase класса String.

Давайте посмотрим:

String one   = "HELLO"; 
String two   = "HELLO"; 
String three = new String("HELLO"); 
String four  = "hello"; 

one == two;   // TRUE
one == three; // FALSE
one == four;  // FALSE

one.equals(two);            // TRUE
one.equals(three);          // TRUE
one.equals(four);           // FALSE
one.equalsIgnoreCase(four); // TRUE

-1
задан Ashish 21 January 2019 в 10:28
поделиться

2 ответа

Вы можете использовать besticon

Это служба избранного:

  • [ 1113] Поддерживает favicon.ico и apple-touch-icon.png

  • API простых URL

  • Генерация резервных иконок

  • Docker image & amp; одиночный бинарный файл для простого хостинга

SAMPLE CODE КАК Использовать его

Layout

<LinearLayout xmlns: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">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">


        <ImageView
            android:id="@+id/stackIMG"
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:layout_margin="10dp" />

        <ImageView
            android:id="@+id/fbIMG"
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:layout_margin="10dp" />

        <ImageView
            android:id="@+id/twitterIMG"
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:layout_margin="10dp" />

    </LinearLayout>


</LinearLayout>

Код активности

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;

public class MainActivity extends AppCompatActivity {


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


    ImageView stackIMG,fbIMG,twitterIMG;

    @Override
    protected void onCreate(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;";

        RequestOptions requestOptions = new RequestOptions();
        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);
    }


}

ВЫХОД

enter image description here

[ 1122] ОБНОВЛЕНИЕ

сделайте ниже изменения в вашем коде

@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) {
    String BASE_URL = "https://besticon-demo.herokuapp.com/icon?url=";

    final int itemType = getItemViewType(position);
    if (itemType == ITEM_TYPE_ONE) {
        final ViewHolder viewHolder = (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(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent;
                String Url = viewHolder.tvSearchUrl.getText().toString();
                String Name = viewHolder.tvName.getText().toString();
                intent = new Intent(context, BookmarkActivity.class);
                intent.putExtra("WebSearchUrl", Url);
                intent.putExtra("WebSearchName", Name);
                v.getContext().startActivity(intent);
            }
        });


        viewHolder.tvIcon.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                Intent intent = new Intent(context, ActivityChangeBookmark.class);
                String Url = viewHolder.tvSearchUrl.getText().toString();
                String Name = viewHolder.tvName.getText().toString();
                Integer Id = viewHolder.tvId.getId();
                Bundle extras = new Bundle();
                viewHolder.tvIcon.buildDrawingCache();
                Bitmap image = 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);
                return false;
            }
        });

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

}
0
ответ дан Nilesh Rathod 21 January 2019 в 10:28
поделиться

Почему вы используете setText? Это должно работать

URL url = new URL(arrayList.get(position).getSearchUrl());
Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
imageView.setImageBitmap(bmp);
0
ответ дан Wasif Laeeq 21 January 2019 в 10:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: