我正试图通过上下文菜单删除列表视图中的一个项目。我有上下文菜单工作,我可以很容易地将新项目插入列表视图,但我不能删除它们。我有两个选项编辑和删除。
public boolean onContextItemSelected (MenuItem item)
{
super.onContextItemSelected(item);
if(item.getTitle() == "Edit")
{
Toast.makeText(this, "Edit", Toast.LENGTH_LONG).show();
}
if(item.getTitle() == "Delete")
{
Toast.makeText(this, "Delete", Toast.LENGTH_LONG).show();
myActivities.remove(item.getGroupId());
populateListView();
}
return true;
}
由于某种原因,被删除的项目总是第一个!myActivities是我的动态数组,我在populateListView中所做的就是填充它。我知道populateList View是有效的,因为如果我向myActivities添加一个项目,然后使用该函数,就会添加新项目。删除操作无效!
注意:我也试过
myActivities.remove(item.getItemId());
让我告诉您从Listview
中删除项的一般方法。
您有一个数据列表,将其传递给适配器,并通过Listview
中的适配器显示给用户。
因此,当您想要删除特定项目时,首先获取该项目的位置,然后从数据列表中删除它。由于底层数据已经更改,在适配器上调用notifyDataSetChanged()
,这将使Listview
刷新子视图。
尝试以下操作:
if((item.getTitle()).equals("Delete")) // You are comparing Strings, don't use ==
{
Toast.makeText(this, "Delete", Toast.LENGTH_LONG).show();
removeItemFromList(itemPosition);
}
// method to remove list item
protected void removeItemFromList(int deletePosition) {
your_datalist.remove(deletePosition);
adapter.notifyDataSetChanged();
}
希望能有所帮助。