Android ListView 不通过方向更改保留值

标签 android listview orientation

我对 Android 在 View 方向变化中保留什么以及不保留什么感到有点困惑。

有些东西似乎可以很好地保留,而另一些东西似乎则不然..所以我不确定这是我的代码还是其他东西。 (我认为我在做一些愚蠢的事情)

我拥有的是一个带有 ListView 的 View , ListView 有一个简单的适配器和一个要放入 ListView 中的 map 项数组。

当方向改变时,我知道 Activity 被销毁并重新创建,所以我假设我的简单适配器及其与 ListView 的联系消失了..所以 ListView 不会旋转填充,我需要使用onRetainNonConfigurationInstance 或 onSaveInstanceState 方法来传递适配器或值列表?

这似乎有点过分了,我不敢相信 Google 的聪明人没有更简单的方法来处理这个问题。 ListView 有一个 ID,定向后我可以向其中添加项目,它工作得很好,但是它只是不再保留以前的值。

我唯一的解决方法是明确传递列表内容吗?是否是我正在创建一个新的 SimpleAdapter 并将其链接到 onCreate 中的列表导致了问题?或者事实上,当 Activity 进行时,我链接到适配器的项目数组被删除了?这似乎不需要这么多工作来完成......我错过了什么吗?

最佳答案

不,您还可以通过 Activity 生命周期拥有一个持久模型,如下所示:

定义一个单例应用程序,并提供获取单例模型的方法。

在创建时从模型中获取数据。

由于您的模型不会重新创建但会持续存在,因此这可以用作通过旋转更改保留对象的解决方法。

问候, 史蒂芬

关于Android ListView 不通过方向更改保留值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6282562/

相关文章:

android - 如何在 Android 中获取当日日志?

android - 将数据插入表中,如果已经存在,则将其带到顶部 SQLite

android - 在 Android 应用程序的 ListView 下添加包含 2 个按钮的布局

javascript - 为 Phonegap/Cordova iOS 应用强制执行正确的方向横向模式

iPhone 界面方向

javascript - 在 iPad 方向更改时刷新网页

Android Geofence 无法调用 IntentService 并且无法在 BroadcastReceiver 中工作

android - 涟漪效果动画速度

java - 无法在ListView中设置多选选择

xaml - ListView 选定项绑定(bind)不起作用