2012-12-05 23 views
5

मैं ViewPager घटक का उपयोग कर एक अनंत कैरोसेल को लागू करने की कोशिश कर रहा हूं। मैं Antonyt द्वारा बनाए गए एक पर आधारित है लेकिन 4 से कम विचारों का उपयोग कर समस्या है। जैसा कि दृश्य पहले से ही मौजूद है। अलग-अलग स्थानों पर एक ही दृश्य/पृष्ठ को आकर्षित करने के लिए व्यूपर को चालित करने का एक तरीका होना चाहिए।4 से कम विचारों के साथ ViewPager परिपत्र

उत्तर

0

समाधान ViewPager में एक ही बच्चे के दृश्य का उपयोग करना है। और ऐसा करने के लिए कि एक ही बच्चे को पहले से ही माता-पिता को असाइन किए बिना, वास्तविक दृश्य के साथ प्रॉक्सी व्यू का उपयोग करना है। व्यू ग्रुप से नकली दृश्य बढ़ाता है और ड्रॉ विधि को ओवरराइड करता है यह चाल करेगा!

1

मैं एक ही समस्या में भाग गया, समाधान स्वयं नहीं मिला। लेकिन मुझे लगता है कि केवल 1-4 विचारों का उपयोग करके करना असंभव है। समस्या यह है कि सभी विचार (पुनरावृत्ति में 1-4 छवियों के लिए) एक बार में तत्काल (या कम से कम एक बहुत ही अंतराल में) तत्काल हो जाएगा, यह छवि लोडिंग प्रक्रिया में हस्तक्षेप करता है क्योंकि पिछला भार समाप्त नहीं हुआ है, इसलिए prev एक क्षतिग्रस्त दृश्य देता है। हालांकि आप इस तरह कुछ ऐसा संभाल सकते हैं।

1) सही इन्स्टेन्शियशन के बाद, 100-200ms की देरी के साथ प्रयोग के हैंडलर विचारों के माध्यम से (लगभग 10 बार) किसी भी दिशा में फ्लिप करने setCurrentItem() बार-बार, इस तरह से मूल 4 सीमा से बाहर हो जाएगा (यदि आपके पास स्क्रीन पेज सीमा है, जो मुझे आशा है कि आपके कोड की infinte प्रकृति का कारण हो) और बाद में एक-एक करके बनाया जाएगा।

2) उपयोग कई बफर वस्तुओं,

1 छवि -8 बफ़र्स

2 छवियों -4 प्रत्येक

3 छवियों -2 के लिए प्रत्येक ... कुछ इस तरह बफ़र्स के लिए बफ़र्स ।

न तो एक आदर्श समाधान है लेकिन दोनों मेरे लिए काम करते हैं लेकिन। मैं जानना चाहता हूं कि आपने भी क्या प्रयास किया।

+0

हाय शक्ति, मुझे आपका समाधान काफी नहीं मिलता है। क्या आप अपना कोड साझा कर सकते हैं? – Dayerman

+0

बिखरे हुए कोड के साथ कार्यान्वयन मेरे लिए जटिल साबित हुआ। मूल विचार यह है कि उन्हें एक बार में एक के बजाय एक-एक करके तुरंत चालू करना है। ऐसा करने के लिए कुछ करने का प्रयास करें। बफर के मामले में आपको एक ही सामग्री के साथ कई छविदृश्य बनाना होगा। – Shakti

+0

समस्या यह है कि मुझे अलग-अलग स्थानों में एक ही दृश्य का उपयोग करने की आवश्यकता है, इसलिए मैं कई बार तत्काल नहीं कर सकता क्योंकि यह एक अलग उदाहरण होगा। तो एक बच्चे की समस्या है जो पहले से ही माता-पिता से जुड़ी है। समाधान 2 स्थानों में दृश्य आकर्षित कर सकता है। जो ViewPager की संरचना में गहराई से जा रहा है। – Dayerman

-1

निम्न चाल का प्रयास करें जिसे मैंने सफलतापूर्वक (गलत) अनंत ListView बनाने के लिए उपयोग किया है।

अपने एडाप्टर की getCount() विधि में, Integer.MAX_VALUE लौटाएं।

फिर एडाप्टर के instantiateItem() या destroyItem(), उपयोग position % datasource.size()

में यह चाल HERE से लिया गया है।

+0

डाउनवोट क्यों? यह सूचियों के लिए बहुत बढ़िया काम करता है ... –

+0

हाय विनय, मैंने पहले से ही उस समाधान का उपयोग किया है। समस्या यह 4 से कम विचारों के साथ काम कर रही है। – Dayerman

0

आपको अलग-अलग आइटम को पुनः संलग्न करने के लिए OnDestoryItem विधि में कुछ कार्य करने की आवश्यकता हो सकती है।
मैंने पहले ही अपना समाधान पोस्ट कर दिया है, https://github.com/antonyt/InfiniteViewPager/issues/2