2011-12-14 13 views
7

चेक करता है मैंने एक सूची दृश्य स्थापित किया है जिसमें प्रत्येक पंक्ति में एक टेक्स्टबॉक्स शामिल है (टेक्स्टव्यू के साथ)। किसी कारण से, जब मैं बॉक्स में से किसी एक को "चेक" करता हूं, तो ऐसा लगता है कि सूची बॉक्स में जो भी बॉक्स विपरीत है (यानी शीर्ष बॉक्स का चयन करते समय, शीर्ष चेकबॉक्स को अनचेक करते समय नीचे चेकबॉक्स चुना जाता है।सूची दृश्य में चेकबॉक्स - जब मैं पहली बार चुनता हूं, तो यह अंतिम और इसके विपरीत

मुझे एहसास है कि यहां काम करने के लिए कोई कोड नहीं है, लेकिन मैं बस सोच रहा था कि यह एक सामान्य समस्या है? यदि नहीं, तो मैं कुछ कोड पोस्ट करने का प्रयास कर सकता हूं। धन्यवाद!

+0

पोस्ट ListView एडाप्टर और संसाधन एक्सएमएल – Spidy

+1

आप शायद कुछ कोड पोस्ट करना चाहिए, लेकिन वास्तव में एक आम सामान्य समस्या (नहीं है के लिए अपने कोड एक बग, लेकिन एक डिज़ाइन चीज जो एंड्रॉइड के लिए बहुत से नए लोगों को एहसास नहीं होती है) जो संभवतः एंड्रॉइड लिस्ट व्यूज़ रीज्यूज व्यू के साथ करने के लिए चल रहा है, अत्यधिक ऑब्जेक्ट सृजन और कचरा संग्रह को रोकने के लिए। – kabuko

+0

मेरा लक्ष्य एक मेनू बनाने के लिए है (जीमेल पर) जब उपयोगकर्ता एक या अधिक चेकबॉक्स का चयन करता है। मुझे सच में यकीन नहीं है कि कोड के कौन से भाग पोस्ट करना है, लेकिन जब मैं अपनी विधियों को नीचे ले जाता हूं जो नीचे "मेनू" लाता है, तो समस्या दूर हो जाती है। कचरा संग्रह को कार्यान्वित करने के बारे में कोई विचार? – jonstaff

उत्तर

4

दृश्य सूची दृश्य में पुनर्नवीनीकरण किया जाता है। जब आपको लगता है कि कुछ नहीं होना चाहिए तो

यहां सौदा है: चेकबॉक्स में कोई विचार नहीं है आपके एडाप्टर में कौन सा आइटम इसका प्रतिनिधित्व करता है। यह केवल एक पंक्ति में एक चेकबॉक्स है सूची दृश्य। आपको उन पंक्तियों को "सिखाने" के लिए कुछ करने की ज़रूरत है जो आपके डेटा सेट में मौजूद आइटम वर्तमान में प्रदर्शित हो रहे हैं। तो, अपने एडाप्टर के डेटा के रूप में स्ट्रिंग सरणी के रूप में सरल कुछ का उपयोग करने के बजाय, एक नया मॉडल ऑब्जेक्ट बनाएं जो उसमें चेकबॉक्स की स्थिति संग्रहीत करता हो। फिर, इससे पहले कि आप getView() में पंक्ति लौटने के लिए, आप की तरह कुछ कर सकते हैं:

//somewhere in your class 
private RowData getData(int position) { 
return(((MyAdapter)getListAdapter()).getItem(position)); 
} 



//..then in your adapter in getView() 

    RowData object = getModel(position); 

    if(object.isChecked()) { 
     myCheckbox.setChecked(true); 
    } else { 
     myCheckbox.setChecked(false); 
     } 

    //then retun your view. 
+0

आपकी प्रतिक्रिया के लिए धन्यवाद। मेरी ListAdapter एक पूरी तरह से अलग वर्ग में fillData() विधि में है। क्या वह गलत है? – jonstaff

+0

@ jstaff107, नहीं, आप जहां भी चाहें अपना एडाप्टर प्राप्त कर सकते हैं। – LuxuryMode

+0

मुझे पूरा यकीन नहीं है कि कक्षा "रोडाडाटा" कहां से आ रही है? – jonstaff

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