2012-12-26 9 views
6

Google ने Google के लिए YouTube एपीआई जारी की है। उस एपीआई में एक मूवी के थंबनेल प्रदर्शित करने के लिए एक यूट्यूब थंबनेल व्यू है। मैं सूची दृश्य में थंबनेल प्रदर्शित करना चाहता हूं। मैंने विचार बनाने के लिए एक एडाप्टर बनाया है। लेकिन मुझे यकीन नहीं है कि इसे कैसे संभालें।YouTube थंबनेल सूची दृश्य में देखें

मेरी सूची दृश्य-एडाप्टर के getView में मैं एक लेआउट बढ़ाता हूं जिसमें YouTubeThumbnailView शामिल है। प्रलेखन के अनुसार (https://developers.google.com/youtube/android/player/reference/com/google/android/youtube/player/YouTube थंबनेल व्यू) मुझे प्रारंभिक विधि को कॉल करना चाहिए।

मुझे आश्चर्य है कि मुझे प्रारंभिक विधि को एक बार कॉल करने की आवश्यकता है या अगर सूची सूची द्वारा दृश्य का पुन: उपयोग किया जाता है तो यह भी कॉल करें? यह जांचने का कोई तरीका नहीं है कि YouTubeThumbnailView पहले ही प्रारंभ हो चुका है या नहीं? तो मुझे लगता है कि मुझे इसे कई बार कॉल करना चाहिए। लेकिन मुझे नहीं पता कि इसकी अनुमति है या नहीं?

उत्तर

16

आपको इसे केवल एक बार कॉल करना चाहिए, लेकिन लोडर को संदर्भित करने के बाद संदर्भ को सहेजना चाहिए। इसका निपटारा करने का एक तरीका View से YouTubeThumbnailLoader पर नक्शा रखना है। getView में, 3 मामले हैं:

  1. दृश्य नया है और इसे प्रारंभ करने की आवश्यकता है।
  2. दृश्य पहले ही शुरू हो चुका है और हमारे पास लोडर का संदर्भ है।
  3. दृश्य वर्तमान में प्रारंभ हो रहा है।

1 और 3 के मामले में, आपको याद रखना होगा कि लोडर को प्रारंभ होने पर क्या करना चाहिए। आप उदा। दृश्य आईडी में वीडियो आईडी को सहेजें।

उदाहरण कोड:

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