Maps V2 フラグメントのマーカーに InfoWindow を表示したいと考えています。つまり、 Universal Image Downloaderを使用して Web から動的に読み込まれる BitMaps を表示したいのです。
これは私の 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;
}
}
これには2つの問題があります:
私たちが知っているように、InfoWindow
が描画され、その後の変更 (私の場合は の新しいBitMap
ものImageView
) は表示されません/ はInfoWindow
更新されません。終了時に InfoWindow に再読み込みするように「通知」するにはどうすればよいimageLoader
ですか? 私が置くとき
marker.showInfoWindow()
その中onLoadingComplete
に、マーカーがポップアップし、画像の読み込みを開始し、それ自体がポップアップするなどの無限ループが作成されました。
私の 2 番目の問題は、低速のネットワーク接続 (コードの 5000 ミリ秒の遅延でシミュレート) では、ImageView
そのイメージがその/InfoWindow
に属しているかどうかに関係なく、最後に読み込まれたイメージが常に表示されることです。ImageWindow
Marker
これを適切に実装する方法について何か提案はありますか?