मुझे लगता है कि एक ArrayAdapter के माध्यम से छोटे एक्सएमएल उप विचारों की आबादी है सूचीदृश्य है। प्रत्येक छोटे दृश्य में केवल दो चीजें होती हैं, एक चेकबॉक्स और उसके आगे एक स्ट्रिंग लेबल होता है।
मैं उपयोगकर्ता चेकिंग या चेकबॉक्स को अनचेक करने की घटना को कैप्चर करने के लिए एक जांच किए गए चेंज किए गए श्रोता को सेट करना चाहता हूं।
उदाहरण के लिए श्रोता यहाँ दिखाया गया है:
listView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
Toast.makeText(this, "box has been checked", Toast.LENGTH_SHORT).show();
}
}
जहाँ मैं श्रोता कोड रख सकता हूं? और मैं इसे कैसे स्थापित करूं? ArrayAdapter के लिए
कोड:
public class MobileArrayAdapter extends ArrayAdapter<CheckBoxInfo>{
CheckBoxInfo[] objects;
Context context;
int textViewResourceId;
public MobileArrayAdapter(Context context, int textViewResourceId,
CheckBoxInfo[] objects) {
super(context, textViewResourceId, objects);
this.context = context;
this.textViewResourceId = textViewResourceId;
this.objects = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row_layout_view = convertView;
if ((row_layout_view == null)){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row_layout_view = inflater.inflate(R.layout.row_layout, null);
}
//CheckBoxInfo item = objects.get(position); // for arrayList
CheckBoxInfo item = objects[position];
if(item != null){
TextView textView = (TextView) row_layout_view.findViewById(R.id.textView1);
CheckBox checkBox = (CheckBox) row_layout_view.findViewById(R.id.checkBox1);
if(item !=null){
textView.setText(item.checkBoxName);
checkBox.setChecked(item.checkBoxState);
}
}
return row_layout_view;
}
}
मैं इस वजह सूचीदृश्य रीसाइक्लिंग विचारों का काम करता है नहीं लगता। जैसे ही आप नीचे स्क्रॉल करते हैं और एक चयनित कन्वर्ट व्यू रीसाइक्लिंग किया जाता है, चेक की गई पंक्ति अनचेक हो जाती है। आप इसके आसपास कैसे जाते हैं? –
यह सही व्यवहार है। जब एक दृश्य का पुन: उपयोग किया जाता है, तो इसके सभी उप-दृश्य बच्चों में अर्थहीन दृश्य की विशेषताएं होती हैं जिन्हें पुनर्नवीनीकरण किया जाता है। इसलिए, आपको हर बार 'getView() 'में सभी दृश्यों और उनके गुणों को अपडेट करना होगा। इसमें चेकबॉक्स मूल्य के साथ-साथ 'ऑनक्लिक लिस्टनर' सेटिंग भी शामिल है। संक्षेप में, श्रोता को रखें और रीसाइक्लिंग (या नए) दृश्य में एक अलग सेटिंग होने पर अपेक्षित मान पर सेट करने के लिए 'checkBox.setchecked() 'जोड़ें। –