Imageloader里面for循环在android中

时间:2015-08-04 07:09:19

标签: android android-asynctask imageview universal-image-loader

我需要使用图片循环图片加载谷歌地图标记。所以,我使用自定义标记(将有超过50个不同的标记图像)。我使用Universal Image loader在Image视图上加载图像。在图像视图上加载图像后,我将该视图转换为标记。

我的问题是ImageLoadingListener没有得到循环。但是,如果我放置断点那么它工作正常。

  final View marker = ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.custom_marker_layout, null);
            final RoundedImageView imv_Logo = (RoundedImageView) marker.findViewById(R.id.imv_size);
            bitmapArray.clear();
            for (int i = 0; i < list_image_url.size(); i++) {
                imageLoader.displayImage(list_image_url.get(i), imv_Logo, options,
                        new ImageLoadingListener() {
                            @Override
                            public void onLoadingStarted(String arg0, View arg1) {

                            }

                            @Override
                            public void onLoadingFailed(String arg0, View arg1,
                                                        FailReason arg2) {
                                imv_Logo.setImageDrawable(getResources().getDrawable(R.drawable.image_not_found));
                                bitmapArray.add(createDrawableFromView(Establishment.this, marker));
                                if (bitmapArray.size() == list_image_url.size()) {
                                    loadmarker(progressDialog);
                                }

                            }

                            @Override
                            public void onLoadingComplete(String arg0, View arg1,
                                                          Bitmap arg2) {
                                bitmapArray.add(createDrawableFromView(Establishment.this, marker));
                                if (bitmapArray.size() == list_image_url.size()) {
                                    loadmarker(progressDialog);
                                }

                            }

                            @Override
                            public void onLoadingCancelled(String arg0, View arg1) {

                            }
                        });
            }

有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

我无法保证,但我猜问题如下。当您告诉ImageLoader将图片加载到ImageView时,它会保留内部HashMap以跟踪哪个图片将显示在ImageView中。您实际在这里做的是要求ImageLoader下载不同的图片,但要在相同的ImageView 中显示它们。

imageLoader.displayImage(list_image_url.get(i), imv_Logo,....

所以每次调用displayImage时,它都会实际更新Map,我猜想ImageLoader足够聪明,可以取消之前的下载。所以最后,你只下载一个图像。

在调试模式下,下载将在两次调用displayImage之间进行,因此您会看到多次调用onLoadingComplete

有意义的是有几个ImageViews