Я хочу показать изображения в списке от URL
, когда URL-адрес изображения не приходит из конца службы, тогда я хочу показать изображение по умолчанию для конкретного индекса. Для этого я использовал Volley
для загрузки изображения в array adapter
. Теперь моя проблема в том, что когда я использовал изображение по умолчанию, то изображения не отображаются должным образом, а иногда они перекрываются с другим изображением. И когда я не использовал изображение по умолчанию, он работает нормально. Вот мой код и, пожалуйста, предложите мне, что с этим не так? Заранее спасибо.Загрузка изображения с помощью Volley
Вот мой класс адаптер,
public class CustomLocalAlertAdapter extends ArrayAdapter<LocalListItem>
implements AppConstants {
Activity a;
ViewHolder holder;
ImageView mImageview;
private Object mImageLoader;
@SuppressWarnings("static-access")
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
// return super.getView(position, convertView, parent);
LocalListItem LocalList = getItem(position);
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(
R.layout.activity_add_local_all_alert_details, parent,
false);
holder = new ViewHolder();
holder.missingTitle = (TextView) convertView
.findViewById(R.id.missingTitle);
holder.missingDetails = (TextView) convertView
.findViewById(R.id.missingDetails);
holder.missingImage = (NetworkImageView) convertView
.findViewById(R.id.missingImage);
holder.suspectImage = (NetworkImageView) convertView
.findViewById(R.id.suspectImage);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
String allAlertSuspectDetails = "";
String allAlertVehicleDetails = "";
String allAlertPersonDetails = "";
if (LocalList.title.equalsIgnoreCase("missing_vehicle_report")) {
allAlertPersonDetails = "";
allAlertSuspectDetails = "";
holder.missingTitle.setText("Missing Vehicle");
allAlertVehicleDetails = "\n" + "Year: " + LocalList.Year + "\n"
+ "Make: " + LocalList.Make + "\n" + "Model: "
+ LocalList.Model + "\n" + "Color: " + LocalList.Color
+ "\n" + "LisencePlateNo: " + LocalList.LisencePlateNo
+ "\n" + "Vin: " + LocalList.Vin + "\n" + "Place: "
+ LocalList.Place;
holder.suspectImage.setVisibility(View.GONE);
} else {
holder.suspectImage.setVisibility(View.VISIBLE);
allAlertVehicleDetails = "";
holder.missingTitle.setText("Missing Person");
allAlertPersonDetails = "\n" + "Name: " + LocalList.personName
+ "\n" + "Height: " + LocalList.height + "\n"
+ "Unique Mark: " + LocalList.uniqueMark + "\n"
+ "Last seen: " + LocalList.lastSeen + "\n"
+ "Date Missing: " + LocalList.dateMissing + "\n"
+ "Police department: " + LocalList.policeDept + "\n"
+ "Police dept.phone: " + LocalList.policePhn + "\n" + "\n";
if (LocalList.suspectName.equalsIgnoreCase("")
|| LocalList.suspectName.equalsIgnoreCase("null")
|| LocalList.suspectName.equalsIgnoreCase(" ")) {
allAlertSuspectDetails = "";
holder.suspectImage.setVisibility(View.GONE);
} else {
allAlertSuspectDetails = "Suspect name: "
+ LocalList.suspectName + "\n" + "Vehicle Color: "
+ LocalList.vehicleColor + "\n" + "Vehicle Year: "
+ LocalList.vehicleYear + "\n" + "Vehicle Make: "
+ LocalList.vehicleMake + "\n" + "Vehicle Model: "
+ LocalList.vehicleModel;
}
}
holder.missingDetails.setText(allAlertVehicleDetails
+ allAlertPersonDetails + allAlertSuspectDetails);
if (LocalList.title.equalsIgnoreCase("missing_vehicle_report")) {
if (LocalList.vehicleImg.trim().equalsIgnoreCase(
"")) {
holder.missingImage.setImageResource(R.drawable.no_image_found);
} else {
holder.missingImage.setImageUrl(LocalList.vehicleImg,
VolleySingleton.getInstance(getContext())
.getImageLoader());
}
} else {
if (LocalList.personImage.trim().equalsIgnoreCase(
"")) {
holder.missingImage.setImageResource(R.drawable.no_image_found);
} else {
holder.missingImage.setImageUrl(LocalList.personImage,
VolleySingleton.getInstance(getContext())
.getImageLoader());
}
if (LocalList.suspectImage.trim().equalsIgnoreCase(
"")) {
holder.suspectImage.setImageResource(R.drawable.no_image_found);
} else {
holder.suspectImage.setImageUrl(LocalList.suspectImage,
VolleySingleton.getInstance(getContext())
.getImageLoader());
}
}
return convertView;
}
public static class ViewHolder {
TextView missingTitle;
TextView missingDetails;
NetworkImageView missingImage;
NetworkImageView suspectImage;
}
public CustomLocalAlertAdapter(Context context,
ArrayList<LocalListItem> ListItem, Activity a) {
super(context, 0, ListItem);
// TODO Auto-generated constructor stub
this.a = a;
}
}
А вот мой VolleySingleton класс,
public class VolleySingleton {
private static VolleySingleton instance;
private RequestQueue requestQueue;
private static ImageLoader imageLoader;
private VolleySingleton(Context context) {
requestQueue = Volley.newRequestQueue(context);
imageLoader = new ImageLoader(requestQueue,
new ImageLoader.ImageCache() {
private final LruCache<String, Bitmap> cache = new LruCache<String, Bitmap>(20);
@Override
public Bitmap getBitmap(String url) {
return cache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
cache.put(url, bitmap);
}
});
}
public static VolleySingleton getInstance(Context context) {
if (instance == null) {
instance = new VolleySingleton(context);
}
return instance;
}
public RequestQueue getRequestQueue() {
return requestQueue;
}
public static ImageLoader getImageLoader() {
return imageLoader;
}
}
Лучший способ - только в одной строке ваша проблема может быть решена. Просто передайте ссылку на изображение и изображение в адаптере. Picasso.with (контекст) .load ("http://i.imgur.com/DvpvklR.png") .into (ImageView); используйте это, чтобы импортировать личную ссылку - https://github.com/square/picasso – Ajinkya