notifyDataSetChanged with SQLite



很抱歉问这个看似简单的问题,但我已经找了几个小时的解决方案,现在我再也受不了了。

我的应用程序非常简单。我在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();

最新更新