android - CheckBox OnCheckedChangeListener() called after recycled? -
android - CheckBox OnCheckedChangeListener() called after recycled? -
problem
i created custom expandablelistadapter handle checkboxes correctly when childrow clicked. added oncheckedchangelistener checkbox , passed item wanted operate on tag. weird things start happen when view clicking on got recycled(i beleive). expand parent, mark child, works fine, , when collapse parent , expand parent oncheckedchangelistener kid clicked before fired. isnt consistant, works not.
questionwhat making checkboxes alter state , how can avoid it? works fine exept these "random" changes of state.
very simplified code@override public view getchildview(int groupposition, int childposition, boolean islastchild, view convertview, viewgroup parent) { convertview = mlayoutinflater.inflate(r.layout.site_picker_list_item_child1, null); checkbox checkbox = (checkbox) convertview.findviewbyid(r.id.site_test_child_selected); final objecta obj = getchild(groupposition, childposition); checkbox.settag(obj); checkbox.setoncheckedchangelistener(new oncheckedchangelistener() { @override public void oncheckedchanged(compoundbutton checkbox, boolean ischecked) { ((objecta)checkbox.gettag()).selected = ischecked; if (ischecked) log.d(tag, "checked: " + ((objecta)checkbox.gettag()).name); else log.d(tag, "unchecked: " + ((objecta)checkbox.gettag()).name); notifydatasetchanged(); } }); homecoming convertview; } public class objecta { string name = "hello"; boolean selected = false; }
you need maintain checked state in objecta class
for example
class objecta{ boolean checked; }
in getview method
final objecta obj = getchild(groupposition, childposition); checkbox.setoncheckedchangelistener(new oncheckedchangelistener() { @override public void oncheckedchanged(compoundbutton checkbox, boolean ischecked){ obj.checked = ischecked; } }); checkbox.setchecked(obj.checked);
android checkbox expandablelistview expandablelistadapter
Comments
Post a Comment