Hello Am facing a particular problem in which I need to download images and display them onto a ListView
corresponding to their particular TextView\'s
Please try this with universal image loader
public class DetailsListViewAdapter extends ArrayAdapter{
private Context context;
private List detailList;
DisplayImageOptions options;
public ImageLoader imageLoader;
public DetailsListViewAdapter(Context context, int textViewResourceId,List detailList) {
super(context, textViewResourceId,detailList);
this.detailList = detailList;
this.context = context;
imageLoader = ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(context));
options = new DisplayImageOptions.Builder()
.showImageForEmptyUri(R.drawable.blankimage)
.showImageOnFail(R.drawable.blankimage)
.resetViewBeforeLoading()
.cacheOnDisc()
.imageScaleType(ImageScaleType.IN_SAMPLE_INT)
.bitmapConfig(Bitmap.Config.RGB_565)
.displayer(new FadeInBitmapDisplayer(300))
.build();
}
static class ViewHolder{
private TextView popupDetails;
private TextView pubDate;
private ImageView image;
private ProgressBar progress;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
ViewHolder holder;
if (v == null) {
LayoutInflater vi = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.details_list_item, null);
holder = new ViewHolder();
holder.popupDetails=(TextView)v.findViewById(R.id.detailHeading);
holder.pubDate = (TextView)v.findViewById(R.id.pubDate);
holder.image = (ImageView)v.findViewById(R.id.listImg);
holder.progress = (ProgressBar)v.findViewById(R.id.progressBar);
v.setTag(holder);
} else {
holder = (ViewHolder) v.getTag();
}
Entry value = detailList.get(position);
holder.popupDetails.setText(value.getTitle());
holder.pubDate.setText(value.getPubDate());
String url = value.getImageLink();
try {
if(url.length() > 5) {
holder.image.setVisibility(View.VISIBLE);
loadImage(holder.image,url,holder.progress);
} else {
if(url.equals("NO")) {
holder.image.setVisibility(View.INVISIBLE);
} else {
holder.image.setVisibility(View.GONE);
}
}
} catch (Exception e) {
Logger.show(e);
}
v.setBackgroundColor(Color.WHITE);
return v;
}
public void loadImage(ImageView imageView, String loadURL,final ProgressBar progress) {
imageLoader.displayImage(loadURL, imageView, options, new SimpleImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
progress.setVisibility(View.VISIBLE);
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
String message = null;
switch (failReason) {
case IO_ERROR:
message = "Input/Output error";
break;
case OUT_OF_MEMORY:
message = "Out Of Memory error";
break;
case NETWORK_DENIED:
message = "Downloads are denied";
break;
case UNSUPPORTED_URI_SCHEME:
message = "Unsupported URI scheme";
break;
case UNKNOWN:
message = "Unknown error";
break;
}
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
}
@Override
public void onLoadingComplete(final String imageUri, View view, final Bitmap loadedImage) {
progress.setVisibility(View.INVISIBLE);
}
});
}
}