我有一個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