给定下面的xml文件,我想在对象列表不为空时显示ListView,在列表为空时显示ViewStub。我可以让它工作,但每当我改变屏幕方向时,我就会丢失添加到列表中的新数据。
基本上,每当我添加一个新对象时,我都会调用适配器的changeData()方法,该方法更改对象列表并调用方法notifyDataSetChanged()。关于如何确保此更改在所有视图中持续存在,有什么建议吗?
( XML中还有更多内容,但这是不相关的):
<ListView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_weight="1"
android:id="@android:id/list"></ListView>
<ViewStub android:id="@android:id/empty"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout="@layout/empty" />
</FrameLayout>发布于 2012-01-29 04:21:09
您必须使用onCreate()方法中提供的savedInstanceState Bundle来维护屏幕状态。每次更改屏幕方向时,都会调用onCreate()。
下面是一个示例:[CLICK]
发布于 2012-01-29 08:53:43
您将数据保存在哪里?问题似乎是,当你的活动被破坏时,你在任何地方都没有坚持下去。你的活动可能会在方向改变时被破坏,但当你在后台,系统内存不足时,也可能发生这种情况。
我建议您将数据保存在onPause、onStop或onDestroy调用中的某个位置,然后在相应的onResume、onStart或onCreate中重新加载它。
https://stackoverflow.com/questions/9048203
复制相似问题