我有一个使用ArrayAdapter的ListView。ArrayAdapter中的项是我创建的自定义对象。
我已经从Parcelable扩展了这个自定义对象。当用户旋转屏幕并保存instanceState时,它会将ArrayList写入outState。重新创建ListActivity时,会将instanceState读回到ArrayList中。在onResume()中,我将ArrayList赋值给ArrayAdapter的items变量,然后使用ArrayAdapter在ListView上调用setAdapter。
不幸的是,ListView中什么也没有显示。
我已经调试过了,在调用setAdapter之前,一切似乎都运行得很好。从instanceState读回ArrayList,所有数据都在那里并被完美地保存下来。
有什么想法吗?
更新:
我已经修复了这个问题。我会试着在这里写一个解释,直到stackoverflow允许我创建一个答案。
在onCreate()中,我实例化了ArrayList的一个新实例。然后,我将该ArrayList提供给我的ArrayAdapter的一个新实例,并使用该ArrayAdapter在ListView上调用setAdapter。在onCreate()之后,调用onRestoreInstanceState()。在onRestoreInstanceState()中,我实际上将ArrayList设置为一个新的ArrayList (从InstanceState读取的那个)。即使我随后将ArrayAdapter的项目变量指向这个新的ArrayList,ArrayAdapter似乎仍然指向旧的空的那个。因此,列表中没有显示任何内容。我修改了onRestoreInstanceState,将读取的ArrayList从InstanceState复制到onCreate()中已经声明的ArrayList。
发布于 2011-08-24 03:14:39
在onCreate()中,我实例化了ArrayList的一个新实例。然后,我将该ArrayList提供给我的ArrayAdapter的一个新实例,并使用该ArrayAdapter在ListView上调用setAdapter。在onCreate()之后,调用onRestoreInstanceState()。在onRestoreInstanceState()中,我实际上将ArrayList设置为一个新的ArrayList (从InstanceState读取的那个)。即使我随后将ArrayAdapter的项目变量指向这个新的ArrayList,ArrayAdapter似乎仍然指向旧的空的那个。因此,列表中没有显示任何内容。我修改了onRestoreInstanceState,将读取的ArrayList从InstanceState复制到onCreate()中已经声明的ArrayList。
https://stackoverflow.com/questions/6737842
复制相似问题