2013-04-22 54 views
9

我正在研究新的Google Map v2 API。Android GoogleMap 2使用ImageView在InfoWindow中動態更新信息通過Universal Image loader

我已經使用ImageLoader在標記上動態顯示圖像。

但問題是,當我有通用圖像裝載機的onLoadingComplete(),該ImageView的是不是既不自動也不手動失效。

如果我點擊相同的標記下一次,圖像將從通用圖像裝載機的高速緩存來顯示。

下面是我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(""); 
     } 
    } 
} 

我店標誌ID在哈希表當我添加標記。從他們我會得到照片的網址。

+0

顯示選項?組態?你在UI線程上調用'displayImage(...)'嗎? – NOSTRA 2013-04-22 11:00:57

+0

在渲染(最終標記標記,視圖視圖)中,我調用了imageLoader.displayImage(....)方法。 – 2013-04-22 11:03:57

回答

9

我已在一流水平的一個標誌物,並使用該對象更新標記信息。

我已經定製瞭如下班裏更新的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

+0

- 您是否可以在一個應用程序中顯示多個地圖? – 2013-04-23 14:26:41

+0

在我的應用程序中,我不能顯示多個地圖。但在Map2中,可以顯示多個地圖。演示可用於Android SDK與谷歌播放服務。 – 2013-04-24 04:25:18

+1

@NishantShah +1爲你的答案,但。如果你在評論中發佈你的博客網址比整個例子更容易:) http://androidfreakers.blogspot.in/謝謝:) – 2013-08-12 13:40:36

相關問題