2012-01-28 58 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中。