2011-03-29 62 views
19

我想要在更改方向时保存/恢复实例的ListView; Contact是要在自定义阵列适配器中显示的项目。Android - 保存/恢复ListView适配器的正确方法是什么?

我节省了名单onSaveInstanceState(Bundle savingInstanceState)活动方法适配器标的:

savingInstanceState.putSerializable(""+R.id.contactList, (Serializable)adapter.contacts()); 

然后在onRestoreInstanceState(Bundle savedInstanceState)我恢复并设置适配器:

List<Contact> contacts = 
     (List<Contact>)savedInstanceState.getSerializable(""+R.id.contactList); 
    ContactListAdapter adapter = 
     new ContactListAdapter((Context)this, android.R.layout.simple_list_item_1, contacts); 
    contactList.setAdapter(adapter); 
    adapter.notifyDataSetChanged(); 

是它做的正确方法?

你有更好/更聪明的解决方案吗?

谢谢

+0

你从哪里得到的数据?如果它已经在设备上,只需再次查询。 – alexanderblom 2011-03-29 09:53:36

+0

@herbalessence我不同意。至于我可以看到它似乎关于如何/何时/是否更新来自哪种类型的线程的适配器数据。谢谢。 – 2011-03-29 10:19:58

+0

@alexanderblom数据来自互联网,但当我改变方向时,他们已经在设备上;就在适配器内部) – 2011-03-29 10:22:38

回答

3
+0

我已成功保存/恢复另一个自定义对象,而不涉及Parcelable的东西。使用它有什么好处(额外的复杂性)? – 2011-03-29 10:24:58

+3

使用Parceable可能更快,对于简单的数据类,添加它并不麻烦。当这个工程实现onRetainNonConfigurationInstance()来快速传递状态。 – alexanderblom 2011-03-29 11:01:39

相关问题