很抱歉问这个看似简单的问题,但我已经找了几个小时的解决方案,现在我再也受不了了。
我的应用程序非常简单。我在SQLite数据库中有"任务",我用这个数据库填充listView,如下所示:
_dataAdapter = new TaskAdapter(_c, _taskDAO.getTasks());
_listTask.setAdapter(_dataAdapter);
返回任务的arrayList。
问题是,当我单击对话框删除任务时,它会将其从数据库中删除,但它仍在屏幕上,这就是为什么我需要刷新listView。
case DialogInterface.BUTTON_NEUTRAL:
_taskDAO.removeTask(1);
_dataAdapter.notifyDataSetChanged();
break;
但它不起作用。我认为这是因为我从数据库中删除了任务,但没有从适配器中删除,但我不太确定。不管怎样,如果有人找到了解决方案。。。
如果您的适配器是ArrayAdapter或BaseAdapter,则ListView的数据源不是DB本身,而是您提供给适配器的List。
您必须更新适配器的数据源(给他一个新的列表),然后调用
_dataAdapter.notifyDataSetChanged();
另一个解决方案是重新创建适配器:
_dataAdapter = null;
_dataAdapter = new TaskAdapter(_c, _taskDAO.getTasks());
_listTask.setAdapter(_dataAdapter);
希望它能帮助
try,
(listName.getAdapter()).notifyDataSetChanged();