【问题标题】:Can't get listview to update, tried most solutions无法更新列表视图,尝试了大多数解决方案
【发布时间】:2013-06-12 00:46:47
【问题描述】:

我有两个活动。

活动 A:包含一个列表视图和一个“编辑”按钮。 Activity B:包含一个表单和一个保存按钮。

当您启动应用程序时,它会打开 Activity A。按“编辑”按钮打开 Activity B。填写表格,按保存并将此数据存储在 SQlite 3 数据库中,然后终止 Activity B。这调用活动 A 的 onResume 方法。

在这个 onResume() 方法中,我试图刷新 listView 以显示刚刚保存到其中的新数据。

目前看起来是这样的;

    @Override
    protected void onResume() { 
        super.onResume();

        arrayAdapter.notifyDataSetChanged();        
        lv.invalidate();
        System.out.println("onResume must have been called ");
    }

为什么我的列表视图从不刷新?如果我完全杀死活动并重新打开它,它只会显示新数据

【问题讨论】:

  • 你能多贴一点代码吗?很难从这段代码中看出什么问题。
  • 剩下的只是从 SQlite 数据库中填充 OnCreate 中的列表视图,并且工作正常。 Invalidate() 在 textviews 上工作。
  • 如何填充阵列适配器?你给它一个列表还是数组?您必须确保支持适配器的数据结构得到更新(也许它还没有 sqllite 数据库更改)。完全重新启动活动可能会针对数据库执行选择,否则。
  • 我相信你可能是对的。我可能只是在刷新适配器,但它没有从 SQlite DB 重新读取以刷新为适配器提供数据的列表。我试试这个
  • 成功了,谢谢。我见过其他人可能也在做同样的事情,所以如果你把它写下来作为答案,我会给你绿色检查:)

标签: android android-listview android-activity


【解决方案1】:

您必须确保支持适配器的数据结构得到更新(也许它还没有 sqllite 数据库更改)。

发生在你身上的是,重新启动活动完全执行对数据库的选择,否则。

【讨论】:

  • 是的,我刚刚复制了我第一次填充 arrayAdapter 的代码,并将其放在 notifyDataSetChanged() 和 invalidate() 前面。现在完美运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多