【问题标题】:notifyDataSetChanged with SQLite使用 SQLite 的 notifyDataSetChanged
【发布时间】:2013-06-20 16:02:45
【问题描述】:

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

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

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

它返回一个Task的arrayList。

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

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

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

【问题讨论】:

    标签: android sqlite list listview notifydatasetchanged


    【解决方案1】:

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

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

    _dataAdapter.notifyDataSetChanged();
    

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

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

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      试试,

      (listName.getAdapter()).notifyDataSetChanged();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多