Android GoogleMap 2 actualiza la información de forma dinámica en InfoWindow con ImageView a través de Universal Image loader

Estoy trabajando en la nueva API de Google Map v2.

He utilizado ImageLoader para mostrar imágenes dinámicamente en Marcador.

Pero el problema es cuando tengo onLoadingComplete () de Universal Image Loader, el ImageView no se invalida ni automáticamente ni manualmente.

La próxima vez que haga clic en el mismo marcador, la imagen se mostrará desde el caché de Universal Image Loader.

A continuación se muestra mi código 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(""); } } } 

I almacena los identificadores de marcador en HashTable cuando agrego Marcador. Y de su voy a obtener la URL de la foto.

He tomado un objeto marcador en el nivel de clase y he utilizado ese objeto para actualizar la información del marcador.

He modificado mi clase para requisitos particulares para actualizar el 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; } } 

Revise el Ejemplo

La vista devuelta de las devoluciones de llamada de la ventana de información no se puede actualizar posteriormente.

Intente seguir esta sugerencia: Contenido dinámico en Maps V2 InfoWindow

  • Bitmap.copy () evita errores de memoria
  • Android Studio fail add libs Cargador de imágenes universal
  • ¿Es posible establecer ImageSize con displayImage ()?
  • URI de Universal Image Loader para Android desde InputStream
  • Android-Universal-Image-Loader no mantiene las imágenes cargadas en desplazamiento en gridview
  • Error de OutOfMemory del cargador de imágenes universal
  • Acceso a imágenes protegidas en el cargador de imágenes universal
  • Compruebe si la imagen está en caché - Universal Image Loader
  • ¿Cómo mostrar sólo imágenes de memoria caché en ViewPager con Universal Image Loader Android?
  • ¿Por qué estoy obteniendo nullpointer en onMeasure en GridView
  • Compartir Imagen elemento de transición tamaño incorrecto
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.