我很遗憾地询问什么似乎是一个简单的问题,但我一直在寻找解决方案几个小时,现在我再也受不了了。
我的应用非常简单。我在SQLite数据库中有“任务”,我用这个数据库填充listView,如下所示:
_dataAdapter = new TaskAdapter(_c, _taskDAO.getTasks());
_listTask.setAdapter(_dataAdapter);
返回Task的arrayList。
问题是,当我单击对话框删除任务时,它会将其从数据库中删除但它仍然在屏幕上,这就是我需要刷新listView的原因。
case DialogInterface.BUTTON_NEUTRAL:
_taskDAO.removeTask(1);
_dataAdapter.notifyDataSetChanged();
break;
但它不起作用。我认为这是因为我从数据库中删除了任务而不是从适配器中删除任务,但我不太确定。 无论如何,如果有人有解决方案......
答案 0 :(得分:1)
如果您的适配器是ArrayAdapter或BaseAdapter,则ListView的数据源不是数据库本身,而是您提供给适配器的List。
您必须更新适配器的数据源(给他一个新列表)然后调用
_dataAdapter.notifyDataSetChanged();
另一种解决方案是重新创建适配器:
_dataAdapter = null;
_dataAdapter = new TaskAdapter(_c, _taskDAO.getTasks());
_listTask.setAdapter(_dataAdapter);
希望有所帮助
答案 1 :(得分:0)
试,
(listName.getAdapter()).notifyDataSetChanged();