【发布时间】:2013-04-15 04:35:47
【问题描述】:
我正在开发新的 Google Map v2 API。
我使用 ImageLoader 在 Marker 上动态显示图像。
但问题是当我得到 Universal Image Loader 的 onLoadingComplete() 时,ImageView 不会自动或手动失效。
下次如果我点击相同的标记,图像将从通用图像加载器的缓存中显示。
下面是我的 CustomInfoWindowAdapter 代码:
private class CustomInfoWindowAdapter implements InfoWindowAdapter {
@Override
public View getInfoContents(Marker marker) {
return null;
}
@Override
public View getInfoWindow(Marker marker) {
final View mWindow = getLayoutInflater().inflate(R.layout.custom_info_window, null);
render(marker, mWindow);
return mWindow;
}
private void render(final Marker marker, View view) {
final String url = markers.get(marker.getId()).getStrProfilePic();
final ImageView image = ((ImageView) view.findViewById(R.id.badge));
Log.e(TAG, "URL : " + url);
if ( url != null && !url.equalsIgnoreCase("null")
&& !url.equalsIgnoreCase("")) {
imageLoader.displayImage(url, image, options, new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view,
Bitmap loadedImage) {
super.onLoadingComplete(imageUri, view, loadedImage);
((ImageView) view).invalidate();
}
});
} else {
image.setImageResource(R.drawable.noimage);
}
final String title = marker.getTitle();
final TextView titleUi = ((TextView) view.findViewById(R.id.title));
if (title != null) {
titleUi.setText(title);
} else {
titleUi.setText("");
}
final String snippet = marker.getSnippet();
final TextView snippetUi = ((TextView) view.findViewById(R.id.snippet));
if (snippet != null) {
snippetUi.setText(snippet);
} else {
snippetUi.setText("");
}
}
}
当我添加 Marker 时,我将 Marker Id 存储在 HashTable 中。从他们那里我会得到照片的 URL。
【问题讨论】:
-
显示选项?配置?你在 UI 线程上调用
displayImage(...)吗? -
在render(final Marker marker, View view)中,我调用了imageLoader.displayImage(....)方法。
标签: android android-maps-v2 universal-image-loader