我有一个Android ListView
其项目有一个复选框。复选框更改值两次
该复选框默认被选中。一旦未选中,它应该从列表中删除。
的问题是,onCheckedChanged
是被解雇了两次:当我点击复选框取消选中它(与isChecked
false
)后,我删除的项(含isChecked
true
)。
这是我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;
}
我在做什么错?
remove()方法做了什么,因为这不是'ListAdapter'上的方法? – CommonsWare 2010-10-12 11:48:03
我正在使用ArrayAdapter。根据Android源代码,remove方法从数组中删除项目并通知数据已更改。 – hpique 2010-10-12 11:54:24