2012-01-28 7 views
1

私のオブジェクトリストが空でない場合はListViewを表示したいが、リストが空の場合はViewStubを表示したい。私はこれを動作させることができますが、画面の向きを変えるたびに、私は自分のリストに追加した新しいデータを失います。Android ListActivity - 空のリストと空でないリストの切り替え

基本的に、私は新しいオブジェクトを追加するたびに、オブジェクトリストを変更してメソッドnotifyDataSetChanged()を呼び出すアダプタのchangeData()メソッドを呼び出します。この変更をすべてのビューで維持する方法についてのアドバイスはありますか?

は、(XMLでもっとありますが、それは無関係です):あなたがonCreate()方法で提供されていますsavedInstanceState Bundleを使用して、画面状態を維持する必要が

<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

。 画面の向きを変えるたびにonCreate()が呼び出されます。ここ

例:あなたは、データを保存している[CLICK]

+0

、私はそれが私のAndroidManifest にこれを追加することで動作するようになった<活動のアンドロイド:名=「YourActivity」アンドロイド:configChanges =「オリエンテーション| keyboardHidden」> – JDelonge

+0

素敵な、私のANSはウル本当PROBのために右です。 –

+0

あなたのマニフェストにconfigChangesのものを追加することは、素早く汚れた作業であり、あなたの問題を本当に解決するものではありません。 – SeanPONeil

0

?問題は、あなたのアクティビティが破壊されたときにどこでもそれを永続させていないように見えるでしょう。オリエンテーションの変更によってアクティビティが破棄されることがありますが、これはバックグラウンドにあり、システムのメモリが不足している場合にも発生します。

データをonPause、onStop、またはonDestroyコールのどこかに保存し、対応するonResume、onStartまたはonCreateにリロードすることをお勧めします。

関連する問題