我正在尝试通过上下文菜单删除列表视图中的项目。我有上下文菜单工作,我可以轻松地将新项目插入列表视图,但我无法删除它们。我有两个选项编辑和删除。
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中所做的就是填充它。我知道populateListView有效,因为如果我将项目添加到myActivities然后使用该功能,则会添加新项目。删除不起作用!
注意:我也试过
myActivities.remove(item.getItemId());
答案 0 :(得分:0)
让我告诉您从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();
}
希望它有所帮助。