我创建了一个具有复选框的自定义ListView。我想删除“删除”菜单选项选择中的选定项目。 我正在处理CheckBox上的onCheckedChanged事件。在这里我维护一个ArrayList来记下所选元素的位置。现在,当用户选择“删除”菜单项时,我会从ListAdapter的ArrayList中删除选择的项目。错误的列表项被删除,而不是使用自定义列表适配器选择的项目
下面是我的代码,
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
names = new ArrayList<String>();
names.add("first");
names.add("second");
names.add("three");
names.add("four");
names.add("five");
names.add("six");
names.add("seven");
names.add("eight");
names.add("nine");
listAdapter = new SelfAdapter(this,names);
this.setListAdapter(listAdapter);
}
@Override
public boolean onOptionsItemSelected(MenuItem menuItem){
int menuId = menuItem.getItemId();
ArrayList<Integer> selectedItems;
switch(menuId){
case R.id.delitem:
Log.d(TAG,"del item selected");
selectedItems = listAdapter.getSelected();
**//pick the selected position items and delete them from the
// listadapter arraylist**
for(Integer element: selectedItems){
Log.d(TAG,"Selected:"+element.toString());
names.remove(element.intValue());
listAdapter.notifyDataSetChanged();
}
}
return true;
}
下面是自定义适配器的代码,
}
现在的问题是,如果选择第1,第2项(例如)然后我看到错误的项目被删除,并在完全错误后填充listview。后来如果我试图删除它抛出的“索引越界异常”的项目。我猜getView方法中的代码出错了。
有人可以帮助我找出在这里做错了什么。
感谢
你能提供具体的问题吗?选择第一和第二项时,哪些项目会被删除?之后listview有什么用? –
@Ted Hopp - 无论我选择的项目被删除的项目是完全不同的(没有模式)...说如果我选择第一和第二项目,然后删除第八和第九项目..但这只是一个例子。 ..没有一定的模式 – droidsites