android 中 for 循环内的图像加载器

Imageloader inside for loop in android

我需要循环加载图像 Google 带有图像的地图标记。所以,我正在使用自定义标记(会有超过 50 个不同的标记图像)。我正在使用通用图像加载器在图像视图上加载图像。将图像加载到图像视图后,我将该视图转换为标记。

我的问题是 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) {

                            }
                        });
            }

谁能帮我解决这个问题?

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

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

所以每次调用 displayImage 时,它​​实际上都会更新地图,我猜 ImageLoader 足够聪明,可以取消之前的下载。所以最后,你只下载了一张图片。

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

的多次调用

有几个 ImageViews.

才有意义