मेरे पास 1000 टुकड़े हैं, जिन्हें टुकड़े में रखा गया है। जब टुकड़ा बनाया जाता है, तो मुझे 600 वें आइटम पर viewPager को स्थानांतरित करने की आवश्यकता होती है। नीचे कोड है कि मैं वास्तव में ऐसा कैसे करता हूं, लेकिन इसमें कुछ समय लगता है।

mPager.post(new Runnable() {
    public void run() {
        mPager.setCurrentItem(600, false);
    }
}); 

क्या यह इसे async / स्मूथ बनाने का कोई तरीका है?

धन्यवाद।

0
viliam 24 नवम्बर 2015, 14:07

2 जवाब

सबसे बढ़िया उत्तर

जैसा कि आप पृष्ठभूमि थ्रेड से UI तत्वों को नहीं छू सकते हैं, इसलिए आप इसे ViewPager.offScreenPageLimit() सेट करने की तरह एक बार में अधिक आइटम लोड करने के लिए क्या कर सकते हैं।

उदाहरण के लिए मैं 100 सेट कर रहा हूं, लेकिन आप इसे सेट कर सकते हैं और फिर इसका परीक्षण कर सकते हैं:

mPager.setOffscreenPageLimit(100);

इसे चिकना बनाने के लिए setCurrentItem() में भी सही उपयोग करें। पसंद:

mPager.post(new Runnable() {
    public void run() {
        mPager.setCurrentItem(600, true);
    }
});
4
Sufian 5 जुलाई 2016, 12:10

अर्सलान जवाब अच्छा है।
इसके अलावा, यदि आप FragmentStatePagerAdapter का उपयोग कर रहे हैं, तो यहां बताए गए मुद्दों से अवगत रहें https://code.google.com/p/android/issues / विस्तार कर सकते हैं = 2 & amp; ? शुरू = 0 & amp; num = 100 & amp; q = & amp; colspec = आईडी% 20Type % 20Status % 20Owner % 20Summary % 20Stars & amp; GroupBy = & amp; प्रकार = & amp; । आईडी = 37,990 < br /> ये विशेष रूप से तब होता है जब आपके पास offScreenPageLimit () का उल्लेख (NO_OF_ITEMS - 1) से कम होता है। ये समस्याएँ तब होती हैं जब उपयोगकर्ता स्वाइप करता है क्योंकि StatePagerAdapter खंड को हटा देता है जब इसकी आवश्यकता नहीं होती है और आवश्यकता होने पर इसे वापस बनाता है। इस एडेप्टर में अनुक्रमण ठीक से नहीं लिया जाता है।

0
cgr 24 नवम्बर 2015, 11:50