【问题标题】:Imageloader inside for loop in androidandroid中for循环内的Imageloader
【发布时间】:2015-08-04 07:09:19
【问题描述】:

我需要用图像循环加载谷歌地图标记。所以,我正在使用自定义标记(将有 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) {

                            }
                        });
            }

谁能帮我解决这个问题?

【问题讨论】:

  • “ImageLoadingListener 没有循环播放”是什么意思?
  • 这个语句@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); } } 没有被循环。只循环一次

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


【解决方案1】:

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

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

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

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

有意义的是有几个ImageViews

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 2015-11-12
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 2018-11-05
    • 2015-07-02
    相关资源
    最近更新 更多