我有一个使用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的item变量指向这个新的ArrayList,ArrayAdapter似乎仍然指向旧的空Array。因此,列表中没有任何内容。我已经改变了onRestoreInstanceState,将从InstanceState读取的ArrayList复制到onCreate()已经声明的ArrayList。
答案 0 :(得分:0)
在onCreate()中,我实例化了我的ArrayList的一个新实例。然后我将ArrayList赋予我的ArrayAdapter的新实例,并使用此ArrayAdapter在ListView上调用setAdapter。在onCreate()之后,调用onRestoreInstanceState()。在onRestoreInstanceState()中,我基本上将我的ArrayList设置为一个新的ArrayList(从InstanceState读取的那个)。即使我然后将ArrayAdapter的item变量指向这个新的ArrayList,ArrayAdapter似乎仍然指向旧的空Array。因此,列表中没有任何内容。我已经改变了onRestoreInstanceState,将从InstanceState读取的ArrayList复制到onCreate()已经声明的ArrayList。