Android上下文菜单和列表视图删除

时间:2014-04-29 05:45:40

标签: android arrays android-listview android-contextmenu

我正在尝试通过上下文菜单删除列表视图中的项目。我有上下文菜单工作,我可以轻松地将新项目插入列表视图,但我无法删除它们。我有两个选项编辑和删除。

    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());

1 个答案:

答案 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();                    
    }

希望它有所帮助。