I'm using Android Universal Image Loader to get images using url and add them to the viewpager. I added a progressbar in my viewpager's item layout so each image has a progressbar and will set its visibility to GONE when the image loads completely. However, it seems that the progressbar only shows on the 1st image of the viewpager and it doesn't disappear even if the images are loaded.
Here is my adapter for the viewpager:
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageLoader imageLoader = ImageLoader.getInstance();
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemView = inflater.inflate(R.layout.viewpager_item, container,
false);
ImageView img = (ImageView) itemView.findViewById(R.id.img);
ProgressBar progressBar = (ProgressBar) itemView.findViewById(R.id.progressBar);
imageLoader.displayImage(links[position], img, options, new SimpleImageLoadingListener() {
@Override
public void onLoadingStarted(String s, View view) {progressBar.setVisibility(View.VISIBLE); }
@Override
public void onLoadingFailed(String s, View view, FailReason failReason) { progressBar.setVisibility(View.GONE); }
@Override
public void onLoadingComplete(String s, View view, Bitmap bitmap) { progressBar.setVisibility(View.GONE); }
});
((ViewPager) container).addView(itemView);
return itemView;
}
I am not sure if there are any changes in the new UIL or it has been updated. But the below works. Makes sure you set the visiiblity of the spinner in the appropriate methods
Use the below
public void display(ImageView img, String url, final ProgressBar spinner)
{
imageLoader.displayImage(url, img, options, new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
spinner.setVisibility(View.VISIBLE); // set the spinner visible
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
spinner.setVisibility(View.GONE); // set the spinenr visibility to gone
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
spinner.setVisibility(View.GONE); // loading completed set the spinenr visibility to gone
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
}
});
}
Then call
display(img, links[position], progressBar);