列表数据更改时更新Android ListActivity?

Posted

技术标签:

【中文标题】列表数据更改时更新Android ListActivity?【英文标题】:Update Android ListActivity when list data changes? 【发布时间】:2010-12-05 01:24:27 【问题描述】:

我想知道当我更改/添加数据时如何刷新ListActivity

我首先认为ListAdapter 会知道列表何时更改,但是当我将元素添加到列表中时,ListActivity 没有更新,只有当我关闭 ListActivity 并再次重新打开它时,我才会看到发生变化。

所以我搜索了任何方法,例如:update(), refesh() 或类似的东西,但没有。 好像没搞懂这个概念,谁能帮帮我?

【问题讨论】:

【参考方案1】:

如果您使用ArrayAdapter,请通过适配器操作列表的内容——不要接触底层列表。 ArrayAdapter上有add()insert()remove()方法。

如果您使用的是CursorAdapter,请在Cursor 上运行requery()

【讨论】:

我使用 ArrayAdapter 并更新记录。如何刷新 ListView? 当然,不再推荐这样做,因为requery() 是在 UI 线程上执行的。如果您偶然发现这篇文章,您应该考虑改用Loader【参考方案2】:

试试 ArrayAdapter:notifyDataSetChangedGoogle docs link

【讨论】:

请注意,如果没有任何观察者附加到适配器,这将不起作用。【参考方案3】:

也许你应该这样做setListAdapter(listAdapter);

【讨论】:

以上是关于列表数据更改时更新Android ListActivity?的主要内容,如果未能解决你的问题,请参考以下文章

更改实时数据时,Android Composelazycolumn 不更新

数据库更改时,Android SimpleCursorAdapter 不会更新

更改数组列表时,带有 ArrayList 和 ListView 的 Android 数组适配器不会更新

DiffUtil 重绘 ListAdapter Kotlin 中的所有项目

更改了arraylist时,ArrayList和ListView的Android数组适配器不会更新

关闭 Firebase 上的实时更改 (Android)