Android ListActivity - 在空列表和非空列表之间切换

时间:2012-01-28 20:10:51

标签: android android-listview

鉴于我下面的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>

2 个答案:

答案 0 :(得分:2)

您必须使用Bundle方法中提供的savedInstanceState onCreate()来维护您的屏幕状态。 每当您更改屏幕方向时,都会调用onCreate()

这里有一个例子:[CLICK]

答案 1 :(得分:0)

您在哪里保存数据?问题似乎是当你的Activity被销毁时你不会在任何地方坚持它。您的活动可以在方向更改时销毁,但是当您在后台并且系统内存不足时也会发生这种情况。

我建议您将数据保存在onPause,onStop或onDestroy调用的某处,并在相应的onResume,onStart或onCreate中重新加载。