gpt4 book ai didi

Android GoogleMap 2 通过通用图像加载器使用 ImageView 在 InfoWindow 中动态更新信息

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:29:36 25 4
gpt4 key购买 nike

我正在开发新的 Google Map v2 API。

我已经使用 ImageLoader 在 Marker 上动态显示图像。

但问题是,当我获得 Universal Image Loader 的 onLoadingComplete() 时,ImageView 不会自动或手动失效。

下次如果我点击同一个标记,图像将从 Universal Image Loader 的缓存中显示。

下面是我的 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。

最佳答案

我在类级别获取了一个标记对象并使用该对象更新标记信息。

我已按如下方式自定义我的类以更新 ImageView:

private class CustomInfoWindowAdapter implements InfoWindowAdapter {

private View view;

public CustomInfoWindowAdapter() {
view = getLayoutInflater().inflate(R.layout.custom_info_window, null);
}

@Override
public View getInfoContents(Marker marker) {

if ( YourClassName.this.marker != null &&
ClassName.this.marker.isInfoWindowShown() ) {
YourClassName.this.marker.hideInfoWindow();
YourClassName.this.marker.showInfoWindow();
}
return null;
}

@Override
public View getInfoWindow(final Marker marker) {
YourClassName.this.marker = marker;

final String url = markers.get(marker.getId()).getStrProfilePic();
final ImageView image = ((ImageView) view.findViewById(R.id.badge));

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);
getInfoContents(marker);
}
});
} 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("");
}

return view;
}
}

Check the Example

关于Android GoogleMap 2 通过通用图像加载器使用 ImageView 在 InfoWindow 中动态更新信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16144341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com