Monday 15 February 2010

android - Why is ListView getChildAt working only upto certain index? -


मेरे पास ListView साथ चेकबॉक्स और TextView < / code>। मैं सूचकांक का उपयोग करके चेकबॉक्स खोजने का प्रयास कर रहा हूं। मेरे मौजूदा परीक्षणों में मेरे पास ListView में 16 आइटम हैं I इंडेक्स 5 से पहले कोड काम करता है और इसके बाद IllegalStateException देता है। ऐसा क्यों हो रहा है? मुझे सभी संकेतों के चेकबॉक्स कैसे प्राप्त हो सकता है? मेरा मानना ​​है कि इसमें लेआउट के साथ कुछ ऐसा है जो केवल दृश्यमान पंक्तियों का प्रतिनिधित्व करता है लेकिन जब भी मैं नीचे स्क्रॉल करता हूं, सूचकांक 0 काम करता है और 5 से बड़े सूचकांक नहीं करते हैं ListView वर्ग के भीतर निजी विशेषता है कोड:

<पूर्व> सार्वजनिक शून्य सूचना (देखें वी) {टेक्स्टव्यू टीवी; चेकबॉक्स सीबी; स्ट्रिंग एस = ""; Int nrItems = lv.getCount (); LinearLayout लेआउट = (LinearLayout) lv.getChildAt (6); टोस्ट। मेक टेक्स्ट (getApplicationContext), पूर्णांक। टॉस्टिंग (लेआउट .getChildCount ()), टोस्ट। LNGTH_SHORT)। दिखाएं (); Cb = (चेकबॉक्स) लेआउट .getChildAt (0); टोस्ट। मेक टेक्स्ट (getApplicationContext (), बूलियन। टॉस्टिंग (सीबी.आईसीईकेक्टेड ()), टोस्ट। एलएनएनजीएचआईएचओआरएआरएआरटी)। दिखाएं (); }

केवल दृश्य ही दिखाई दे रहे हैं यदि आप नीचे स्क्रॉल करते हैं तो उदाहरण के लिए 6 से 10 पंक्ति देखें तो getChildAt (0); वास्तव में पंक्ति 6 ​​है क्योंकि यह पहला दृश्य है जो वास्तव में वहाँ है

संपादित करें: < Br> क्या आप शायद करने की कोशिश करते हैं सभी चेकबॉक्सों के isChecked () मान मिलते हैं बात यह है कि स्क्रीन पर दिखाई देने से कहीं अधिक चेकबॉक्स नहीं होते हैं। इसलिए 'सभी चेकबॉक्स' कभी भी 16 नहीं होते हैं।

चेकबॉक्स को केवल कुछ डेटा का प्रतिनिधित्व करना चाहिए। आपको कुछ करने के लिए isChecked पर तथ्य पर भरोसा नहीं करना चाहिए आपको एक पृथक सूची या बूलियन मानों की सरणी को रखना चाहिए, जो दर्शाता है कि चेकबॉक्स चेक किया गया है या नहीं। यह तब भी उपयोगी है जब पंक्तियों का उपयोग करते हुए मुझे लगता है कि आप ऐसा नहीं करते हैं।


No comments:

Post a Comment