새로운 Google Map v2 API를 개발 중입니다.Android GoogleMap 2 유니버설 이미지 로더를 통해 InfoWindow에서 ImageView로 정보를 동적으로 업데이트합니다.
저는 ImageLoader를 사용하여 마커에서 이미지를 동적으로 표시했습니다.
하지만 문제는 유니버설 이미지 로더의 onLoadingComplete()가있을 때 ImageView가 자동 또는 수동으로 무효화되지 않는 것입니다.
다음 번에 동일한 마커를 클릭하면 캐시가 유니버설 이미지 로더에서 표시됩니다.
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("");
}
}
}
나는 마커를 해시에 저장 마커 ID를 추가 :
다음은 내 CustomInfoWindowAdapter 코드입니다. 그리고 그들로부터 나는 사진의 URL을 얻을 것이다.
표시 옵션 :
나는 이미지 뷰를 업데이트하려면 다음과 같이 내 클래스를 정의했다? 구성? UI 스레드에서'displayImage (...) '를 호출합니까? – NOSTRA
render (최종 마커보기 뷰)에서 imageLoader.displayImage (....) 메서드를 호출했습니다. –