删除ListItems后刷新ListView

时间:2012-10-24 13:17:21

标签: android listview adapter

我有一个列表视图,填充了几个ListItems。我还有一个选项菜单,其中包括“删除所有项目”按钮。当我点击此按钮时,它会调用一个删除除默认值以外的所有项目的方法,并且还应该刷新ListView。 这是菜单代码:

public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId())
    {
        ...
        case R.id.optMenuDeleteAllCategories:
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage("Are you sure you want to delete all categories?")
            .setCancelable(false)
            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    **deleteAllCategories();**
                }

这是deleteAllCategories()方法:

 public void deleteAllCategories()
{
    manager.deleteAllCategories();
    adapter.notifyDataSetChanged();
}

所以它会删除所有内容,但ListView不会刷新。我必须退出应用程序并重新打开它以查看更改。我还尝试在调用adapter.notifyDataSetChanged();方法之后立即放置deleteAllCategories行,但ListView仍然没有刷新。

那么如何在不退出应用程序的情况下刷新它?

1 个答案:

答案 0 :(得分:2)

在deleteAllCategories方法中调用adapter.clear()以删除列表中的项目。

编辑:ArrayAdapter在内部将处理不同的列表实例,然后是您传入的列表实例。因此,虽然将反映对原始列表中对象的更改,但对于适配器,将无法看到对传入的ArrayList的更改。

您需要使用ArrayAdapter的add,insert,remove和clear方法来修改适配器中的列表。