Dynamiczne treści w Mapach V2 InfoWindow
Chcę pokazać InfoWindow na znacznikach w fragmencie mapy V2. Chodzi o to, że chcę pokazać BitMapy, które są dynamicznie ładowane z sieci za pomocąUniversal Image Downloader.
To jest mój InfoWindowAdapter:
class MyInfoWindowAdapter implements InfoWindowAdapter {
private final View v;
MyInfoWindowAdapter() {
v = getLayoutInflater().inflate(R.layout.infowindow_map,
null);
}
@Override
public View getInfoContents(Marker marker) {
Item i = items.get(marker.getId());
TextView tv1 = (TextView) v.findViewById(R.id.textView1);
ImageView iv = (ImageView) v.findViewById(R.id.imageView1);
tv1.setText(i.getTitle());
DisplayImageOptions options = new DisplayImageOptions.Builder()
.delayBeforeLoading(5000).build();
imageLoader.getMemoryCache();
imageLoader.displayImage(i.getThumbnailUrl(), iv, options,
new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
// TODO Auto-generated method stub
}
@Override
public void onLoadingFailed(String imageUri, View view,
FailReason failReason) {
// TODO Auto-generated method stub
}
@Override
public void onLoadingComplete(String imageUri,
View view, Bitmap loadedImage) {
Log.d("MAP", "Image loaded " + imageUri);
}
@Override
public void onLoadingCancelled(String imageUri,
View view) {
// TODO Auto-generated method stub
}
});
return v;
}
@Override
public View getInfoWindow(Marker marker) {
// TODO Auto-generated method stub
return null;
}
}
Mam z tym 2 problemy:
Jak mywiedzieć InfoWindow
jest rysowany i późniejsze zmiany (w moim przypadku noweBitMap
naImageView
) nie są wyświetlane / theInfoWindow
nie jest aktualizowany. Jak mogę „powiadomić” InfoWindow o ponownym załadowaniu, gdyimageLoader
skończyłeś? Kiedy położyłem
marker.showInfoWindow()
wonLoadingComplete
stworzył nieskończoną pętlę, w której pojawi się znacznik, rozpocznie ładowanie obrazu, pojawi się itp.
Moim drugim problemem jest to, że na wolnym połączeniu sieciowym (symulowanym z opóźnieniem 5000 ms w kodzie)ImageView
wInfoWindow
zawsze wyświetla ostatni załadowany obraz, niezależnie od tego, czy ten obraz należy do tegoImageWindow
/ Marker
.
Wszelkie sugestie na temat tego, jak dobrze to wdrożyć?