2012-11-26 18 views
14

मेरे पास एक कस्टम सूची है और इसे दिखाने के लिए कुछ मिनट लगते हैं। जब मैं यह जांचने की कोशिश कर रहा था कि समस्या कहां है, मैंने देखा कि जब भी सूची में मेरे पास केवल 1 आइटम है, तो विधि getCount() को 5 बार कहा जा रहा है, getVIew() को एक बार बुलाया जा रहा है, तो get getउंट() है अधिक समय के लिए बुलाया जा रहा है। कुल मिलाकर getCount() को 7 बार कहा जा रहा है। क्या यह समझ में आता है?एडाप्टर में getCount क्यों कई बार बुलाया जा रहा है?

धन्यवाद!

+0

PLease कोड नमूना प्रदान करते हैं! –

+0

कोड दिखाएं। और मुझे संदेह है कि getCount() आपकी सूची क्रॉल करें –

+0

क्या आप स्क्रॉल कर रहे थे? अधिक डेटा प्रदान करें – GamDroid

उत्तर

9

आप Adapter.getCount() विधि के लिए here अलग आंतरिक कॉल देख सकते हैं।

लेकिन आप मन आप कैसे इस विधि वाला कहा जा रहा है पर कोई नियंत्रण नहीं है कि में रखना चाहिए।

यह कई बार कहा जा सकता है और यही कारण है कि आप इसे जितनी जल्दी संभव के रूप में रखने के लिए है।

+0

क्षमा करें, लेकिन मुझे "इसे यथासंभव तेज़ी से रखें" भाग नहीं समझा था- यह विधि केवल सरणी आकार को सही करती है? – user1787773

+1

निश्चित रूप से। लेकिन आप इसे पसंद के रूप में ओवरराइड कर सकते हैं। विचार यह सुनिश्चित करना है कि आप इसमें कोई महंगी गणना नहीं करते हैं, क्योंकि इसे कई बार और यूआई थ्रेड में बुलाया जाने की संभावना है। – fiddler

+0

मैंने इसे ओवरराइड नहीं किया। मैं बस सरणी आकार वापस कर रहा हूँ। तो मुझे लगता है कि इसका मतलब यह है कि सूची देखने वाले समय को getCount() के साथ कुछ भी नहीं मिला है जिसे कई बार बुलाया जा रहा है? – user1787773

2

getCount() कई बार कहा जाता है क्योंकि App-USERupdate its list किसी भी समय और thats (में इसके भंडारण डेटा जोड़ सकते हैं) कर सकते हैं कारण है कि हम वापसी, (storage).size() (तत्वों की कुल संख्या)।

1

एडाप्टर getCount() विधि निम्नलिखित मामलों में बुलाया जाएगा।

1) जब एडाप्टर सूची में देखें/ग्रिड दृश्य की स्थापना।

2) जब हम एडाप्टर पर notifyDataSetChanged कहते हैं।

तो, अपने कोड में जाँच, आप ऊपर मामलों और अधिक समय या रिकर्सिवली कर किया जा सकता है ..

0

आप एक खोज बटन कि अनुकूलक अपडेट हो जाता है जब खोज होनी चाहिए। उस विधि को दृश्य को कई बार चित्रित करने के लिए कहा जाता है, यदि उस विधि के अंदर आपके पास setAdapter है, तो getCount को कई बार बुलाया जाएगा, और 0 लौटाएगा और आप देखेंगे नहीं जाएगा।

संबंधित मुद्दे