在屏幕方向更改时保存自定义ArrayList

时间:2014-05-01 08:43:39

标签: java android android-listview android-arrayadapter parcelable

我有一个ListActivity,其中ListView由自定义数组适配器驱动,该适配器中包含自定义对象。自定义对象是站点。

在方向更改时,我当前的实现是尝试再次访问数据库以填充ListView,我想保存当前的ArrayAdapter,然后在方向更改后将其重新附加到ListView。

虽然我并不热衷于此,但我不得不承认我需要Site实现Parcelable,以便我可以将整个ArrayAdpter作为Paracables数组保存到bundle中。

我已经看过this post,它完全符合我的需要。

但是,我的Site对象中包含自定义对象的变量,这些对象本身也有其他对象,例如DateFormat。我无法从帖子中弄清楚我上面如何实现这一点,以便构成Site对象一部分的对象中的对象可以包含在Parcel中,因为这个例子只处理字符串和包裹似乎没有writeObject()方法!

还有其他选择吗? (我很想避免使用Parcelable,但是如果我必须这样做的话)

感谢 亚伦

1 个答案:

答案 0 :(得分:0)

您正在使用ListActivity,这意味着您的UI在两个方向上都相似吗?

  • 如果是,您可以通过在此活动的清单中添加android:configChanges="orientation|screenSize"来避免重新定位活动的条件。

  • 如果没有,那么您应该使用FragmentActivity并在其中创建一个listview,然后您可以使用onRetainCustomNonConfigurationInstance()返回您的适配器对象,并在配置更改后使用getLastCustomNonConfigurationInstance() < / p>

相关问题