java - Android 如何保存 ListView 的状态

标签 java android listview state retain

有我可以使用的listviewObject.saveViewStates(view)函数吗?我有 ListView ,我有其他带有自定义适配器的 ListView ,但这些都没有保存 View 的状态。这些 ListView 中有很多动态生成的内容,因此,当然,当该行超出 View 时,数据会被重置。

我理解 View 持有者背后的概念,但我很难追溯地将我的 ListView 与它们配合。 (空异常、非法状态异常)

既然保存 View 的常见方式是传递 View ,那么 ListView 有一个简单地接受 View 作为变量的内置函数不是有意义吗?我知道 ListView 是在考虑到有限内存的情况下创建的,与 webview 相比,没有办法保存内置状态似乎是疏忽了 - webview 也是在考虑到有限内存的情况下构建的 - 用户可以强制启用/禁用缓存,进行自己的内存管理等。

赞赏洞察力

最佳答案

列表的整体思想是它是动态的并且可能很长 - 因此有很多不可见的行。因此,适配器方法的目标是仅保留屏幕上可见的尽可能多的 View ,并通过运行 getView() 用数据填充它们 - 如果不再需要,它应该重用 View 。

因此,当您将其纳入帐户时,它变得非常简单,应该保存/重新加载背后的数据模型(存储在适配器中),并且在重新加载列表并填充数据时应该重建 ListView 来自模型。

这更符合列表概念。

关于java - Android 如何保存 ListView 的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6541926/

相关文章:

java - Android - 单击按钮以使用 ListView 显示 Activity 时应用程序崩溃

java - 健身功能

java - 无法解析我的类 Android-Studio 的符号

android - RecyclerView.ViewHolder 无法使用 ButterKnife 绑定(bind) View

android - 仅通过 AsyncTask 加载一次 ListFragment

java - 自定义 ListView onItemClickListener

Java排序算法题

java - 在mysql中插入西类牙语文本

JavaFX - TreeTableView sortPolicyProperty()

listview - UWP 更改 ListView 项目高度