我需要使用图片循环图片加载谷歌地图标记。所以,我使用自定义标记(将有超过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) {
}
});
}
有人可以帮我吗?
答案 0 :(得分:1)
我无法保证,但我猜问题如下。当您告诉ImageLoader
将图片加载到ImageView
时,它会保留内部HashMap
以跟踪哪个图片将显示在ImageView
中。您实际在这里做的是要求ImageLoader
下载不同的图片,但要在相同的ImageView
中显示它们。
imageLoader.displayImage(list_image_url.get(i), imv_Logo,....
所以每次调用displayImage时,它都会实际更新Map,我猜想ImageLoader足够聪明,可以取消之前的下载。所以最后,你只下载一个图像。
在调试模式下,下载将在两次调用displayImage之间进行,因此您会看到多次调用onLoadingComplete
。
有意义的是有几个ImageViews
。