1
我想从URL
列表中显示图像,当没有图像URL来自服务端时,我想显示特定索引的默认图像。为此,我在array adapter
中使用了Volley
进行图片加载。现在我的问题是当我使用默认图像,然后图像显示不正确,有时它与另一个图像重叠。而当我没有使用默认图像,那么它工作正常。这是我的代码,请告诉我这有什么问题?提前致谢。使用Volley加载图像
这里是我的Adapter类,
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的);用它来导入liabrary链接 - https://github.com/square/picasso – Ajinkya