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
Вы можете использовать besticon
Это служба избранного:
blockquote>
- [ 1113] Поддерживает favicon.ico и apple-touch-icon.png
API простых URL
Генерация резервных иконок
Docker image & amp; одиночный бинарный файл для простого хостинга
SAMPLE CODE КАК Использовать его
Layout
blockquote><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>
Код активности
blockquote>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); } }
ВЫХОД
[ 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()); } }
Почему вы используете setText? Это должно работать
URL url = new URL(arrayList.get(position).getSearchUrl());
Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
imageView.setImageBitmap(bmp);