2012-12-26 34 views
6

谷歌發佈了Google的YouTube API。在那個API是一個YouTubeThumbnailView顯示電影的縮略圖。 我想在ListView中顯示縮略圖。我製作了一個適配器來製作視圖。但我不知道如何處理這個問題。ListView中的YouTubeThumbnailView

在我的ListView適配器的getView中,我膨脹了包含YouTubeThumbnailView的佈局。根據文檔(https://developers.google.com/youtube/android/player/reference/com/google/android/youtube/player/YouTubeThumbnailView)我應該調用初始化方法。

我想知道是否需要調用初始化方法一次,或者如果視圖被ListView重用,也調用此方法?沒有辦法檢查YouTubeThumbnailView是否已經初始化?所以我想我應該多次調用它。但我不知道這是否允許?

回答

16

您應該只調用一次,但在初始化後保存對加載器的引用。解決這個問題的一種方法是將地圖從View保存到YouTubeThumbnailLoader。在getView中有3種情況:

  1. 視圖是新的,需要初始化。
  2. 視圖已經初始化,我們有一個對加載器的引用。
  3. 該視圖目前正在初始化。

在情況1和3中,您需要記住加載程序在初始化時應該執行的操作。你可以例如將視頻ID保存在視圖的標記中。

示例代碼:

Map<View, YouTubeThumbnailLoader> loaders; 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View view = convertView; 
    String videoId = getVideoId(position); 

    if (view == null) { 
    // Case 1 - We need to initialize the loader 
    view = inflater.inflate(..., parent, false); 
    YouTubeThumbnailView thumbnail = (YouTubeThumbnailView) view.findViewById(R.id.thumbnail); 
    thumbnail.setTag(videoId); 
    thumbnail.initialize(DeveloperKey.DEVELOPER_KEY, thumbnailListener); 
    } else { 
    YouTubeThumbnailView thumbnail = (YouTubeThumbnailView) view.findViewById(R.id.thumbnail); 
    YouTubeThumbnailLoader loader = loaders.get(thumbnail); 
    if (loader == null) { 
     // Case 3 - The loader is currently initializing 
     thumbnail.setTag(videoId); 
    } else { 
     // Case 2 - The loader is already initialized 
     thumbnail.setImageResource(R.drawable.loading_thumbnail); 
     loader.setVideo(videoId); 
    } 
    } 
    return view; 
} 

而在你thumbnailListener:

@Override 
    public void onInitializationSuccess(YouTubeThumbnailView view, YouTubeThumbnailLoader loader) { 
    String videoId = (String) view.getTag(); 
    loaders.put(view, loader); 
    view.setImageResource(R.drawable.loading_thumbnail); 
    loader.setVideo(videoId); 
    } 
+0

我遇到了一些問題,因爲我使用了錯誤的實現類的地圖,但是當我得到了整理出來,它工作正常。感謝您的解決方案! –

+0

完美,像魅力一樣工作 – khurramengr