मेरे पास एंड्रॉइड ListView
है जिनके आइटम में चेकबॉक्स है।चेकबॉक्स दो बार मूल्य बदलता है
चेकबॉक्स डिफ़ॉल्ट रूप से चेक किया गया है। अनचेक किए जाने के बाद इसे सूची से हटा दिया जाना चाहिए। जब मैं इसे अचयनित करने के लिए (isChecked
false
के साथ) चेकबॉक्स नल और मैं मद (isChecked
true
साथ) को हटाने के बाद:
समस्या यह है कि onCheckedChanged
दो बार गोली चलाई जा रही है।
यह मेरा ArrayAdapter के प्रासंगिक कोड है:
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.item, parent, false);
holder = new ViewHolder();
holder.check = (CheckBox) convertView.findViewById(R.id.check);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
final Object item = this.getItem(position);
holder.check.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (!isChecked) {
remove(item); // This somehow calls onCheckedChanged again
}
}
});
return convertView;
}
क्या मैं गलत कर रहा हूँ?
'निकालें() 'विधि क्या करती है, क्योंकि यह' ListAdapter' पर कोई विधि नहीं है? – CommonsWare
मैं एक ArrayAdapter का उपयोग कर रहा हूँ। एंड्रॉइड स्रोत कोड के अनुसार, निकालने का तरीका आइटम को सरणी से हटा देता है और यह सूचित करता है कि डेटा बदल दिया गया है। – hpique