0

很抱歉问什么似乎是一个简单的问题,但我一直在寻找解决方案几个小时,现在我再也受不了了。

我的应用程序非常简单。我在 SQLite 数据库中有“任务”,我用这个数据库填充了一个 listView,如下所示:

_dataAdapter = new TaskAdapter(_c, _taskDAO.getTasks());
_listTask.setAdapter(_dataAdapter);

它返回一个任务的arrayList。

问题是,当我单击对话框删除任务时,它会从数据库中删除它,但它仍然在屏幕上,这就是我需要刷新 listView 的原因。

 case DialogInterface.BUTTON_NEUTRAL:
                _taskDAO.removeTask(1);
                _dataAdapter.notifyDataSetChanged();
                break;

但它不起作用。我认为这是因为我从数据库中删除了任务,但没有从适配器中删除,但我不太确定。无论如何,如果有人有解决方案......

4

2 回答 2

1

如果您的适配器是 ArrayAdapter 或 BaseAdapter,则您的 ListView 的数据源不是 DB 本身,而是您提供给适配器的 List。

您必须更新适配器的数据源(给他一个新列表)然后调用

_dataAdapter.notifyDataSetChanged();

另一种解决方案是重新创建适配器:

_dataAdapter = null;
_dataAdapter = new TaskAdapter(_c, _taskDAO.getTasks());
_listTask.setAdapter(_dataAdapter);

希望能帮助到你

于 2013-06-25T13:03:13.567 回答
0

尝试,

(listName.getAdapter()).notifyDataSetChanged();
于 2013-06-25T13:23:15.777 回答