使用带有viewpager和Android UIL的ProgressBar不会将其可见性设置为GONE

时间:2013-12-25 17:52:06

标签: android android-viewpager universal-image-loader

我正在使用Android通用图片加载器使用网址获取图片并将其添加到viewpager。我在viewpager的项目布局中添加了一个进度条,因此每个图像都有一个进度条,并在图像完全加载时将其可见性设置为GONE。但是,似乎进度条仅显示在viewpager的第一个图像上,即使加载了图像也不会消失。

这是我的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;
}

1 个答案:

答案 0 :(得分:1)

我不确定新UIL是否有任何更改或已更新。但下面的工作。确保使用适当的方法

设置微调器的可视性

使用以下

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) {

        }

});
}

然后致电

display(img, links[position], progressBar);