2012-01-28 52 views
1

鉴于我的xml文件如下,我想在我的对象列表不为空时显示ViewStub。我可以得到这个工作,但是每当我改变屏幕方向时,我都会丢失添加到列表中的新数据。Android ListActivity - 在空列表和非空列表之间切换

基本上,任何时候我添加一个新的对象,我调用我的适配器的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

你必须使用savedInstanceState Bundle这是在onCreate()方法可以保持你的屏幕状态。 每当你改变你的屏幕方向onCreate()被调用。

这里一个例子:[CLICK]

+0

我把它加入这个我AndroidManifest 工作<活动机器人:名字=“YourActivity”机器人:configChanges =“方向| keyboardHidden”> – JDelonge 2012-01-28 20:52:56

+0

不错,但我ANS适合乌尔真正的概率。 – 2012-01-28 20:57:42

+0

将configChanges的东西添加到清单是一个快速和肮脏的工作,并没有真正解决您的问题。 – SeanPONeil 2012-01-28 21:05:14

0

你在哪里保存数据?问题似乎是,当你的Activity被破坏时,你并没有将它保存在任何地方。您的活动可能会在方向更改中被破坏,但是当您处于后台并且系统内存不足时也会发生这种情况。

我建议您将数据保存在onPause,onStop或onDestroy调用中的某个位置,然后将其重新加载到相应的onResume,onStart或onCreate中。