我有一个ListActivity,其中ListView由自定义数组适配器驱动,该适配器中包含自定义对象。自定义对象是站点。
在方向更改时,我当前的实现是尝试再次访问数据库以填充ListView,我想保存当前的ArrayAdapter,然后在方向更改后将其重新附加到ListView。
虽然我并不热衷于此,但我不得不承认我需要Site实现Parcelable,以便我可以将整个ArrayAdpter作为Paracables数组保存到bundle中。
我已经看过this post,它完全符合我的需要。
但是,我的Site对象中包含自定义对象的变量,这些对象本身也有其他对象,例如DateFormat。我无法从帖子中弄清楚我上面如何实现这一点,以便构成Site对象一部分的对象中的对象可以包含在Parcel中,因为这个例子只处理字符串和包裹似乎没有writeObject()方法!
还有其他选择吗? (我很想避免使用Parcelable,但是如果我必须这样做的话)
感谢 亚伦
答案 0 :(得分:0)
您正在使用ListActivity,这意味着您的UI在两个方向上都相似吗?
如果是,您可以通过在此活动的清单中添加android:configChanges="orientation|screenSize"
来避免重新定位活动的条件。
如果没有,那么您应该使用FragmentActivity并在其中创建一个listview,然后您可以使用onRetainCustomNonConfigurationInstance()
返回您的适配器对象,并在配置更改后使用getLastCustomNonConfigurationInstance()
< / p>