【发布时间】:2013-05-17 04:14:17
【问题描述】:
我在由 CursorAdapter 填充的片段中有一个列表视图。
当设备旋转时,我想保存列表的状态,然后恢复它,而无需再次调用 SQLite DB。
我该怎么做?
我没有使用 ContentProvider 或任何 CursorLoaders。
【问题讨论】:
标签: android save restore simplecursoradapter android-cursoradapter
我在由 CursorAdapter 填充的片段中有一个列表视图。
当设备旋转时,我想保存列表的状态,然后恢复它,而无需再次调用 SQLite DB。
我该怎么做?
我没有使用 ContentProvider 或任何 CursorLoaders。
【问题讨论】:
标签: android save restore simplecursoradapter android-cursoradapter
您可以将 Cursor 保存在 Activity 的方法 onRetainNonConfigurationInstance() 中,或者使用包含光标的数据片段并在片段的 onCreate() 方法中调用 setReatinInstance()。
然后您必须在 onCreate() 方法中重新创建 CursorAdapter。
最后,您必须通过在您的ListView 上调用getFirstVisiblePosition() 来存储您的ListView 当前可见的最顶层项目。此方法返回一个 int 值,您可以将其存储在 Activity 的 onSaveInstanceState() 方法中的 Bundle 中。
您在onCreate() 方法中使用此值(它是传递给onCreate() 的包的一部分)。设置好适配器后,调用 [setSelectionFromTop(yourValue, 0)](https://developer.android.com/reference/android/widget/ListView.html#setSelectionFromTop(int, int))。
【讨论】: