【发布时间】:2015-04-13 15:43:13
【问题描述】:
问题
我创建了一个自定义 expandablelistadapter 以在单击子行时正确处理我的复选框。我在复选框中添加了一个 OnCheckedChangeListener 并将我想要操作的项目作为标签传递。当我单击的视图被回收时(我相信),奇怪的事情开始发生。我展开一个父母,然后标记我的孩子,这很好,然后当我折叠父母并展开另一个父母时,我之前单击的孩子的 OnCheckedChangeListener 被触发。这并不是真正一致的,有时效果很好,但有时效果不佳。
问题
是什么让我的复选框改变了状态,我该如何避免? 除了这些“随机”的状态变化之外,它工作正常。
非常简化的代码
@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();
}
});
return convertView;
}
public class ObjectA {
String name = "Hello";
Boolean selected = false;
}
【问题讨论】:
标签: android checkbox expandablelistview expandablelistadapter