2011-12-17 12 views
0

私はListActivityを拡張する1つのアンドロイドのアクティビティを持っています。リストアイテムが押されるたびに、アクティビティはその状態(新しいリストアダプタ)を変更してリロードする必要があります。アイテムのクリックでそれを行うには、リストの新しいArrayAdapterを作成して設定しますが、アイテムのリストをリセットする代わりに、新しいアイテムは古いものにちょうど追加されます。古いリストアイテムを消去して新しいアイテムを設定するにはどうすればよいですか?仕上げなしのアンドロイドの再ロード

private void update() { 
    if (flag == null) { 
     //do nothing 
    } else { 
     list_items = new Vector(); 
     list_items.addAll(getNewListItems()); 
    } 
    String[] items = new String[list_items.size()]; 
    for (int i=0; i<list_items.size(); i++) 
     items[i] = list_items.get(i).toString(); 
    setListAdapter(new ArrayAdapter<String>(this, R.layout.menu_layout, R.id.label, items)); 
} 
+0

はあなたのコードを投稿 –

+0

はあなただけadapter.notifyDataSetChangedを使用することはできませんしてください( ) – MKJParekh

答えて

0

カスタムアダプタを作ることができ、

はあなたString[] itemsに新しいアイテムを追加します。

そして、ちょうどあなたのアダプタにnotifyDataSetChanged()を呼ぶ...

その後、あなたは毎回新しいアダプタを呼び出す必要はありません。..

+0

実際に新しいアダプタを作成するたびに間違っていますか?とにかく、私はカスタムアダプタのgetViewメソッドでnotifyDataSetChanged()を呼び出そうとしましたが、それは役に立たなかった - まだ古い項目が表示されます – Sergey

+0

はい、新しいアダプタが作成されるたびに間違っています。新しいString [] items配列(古いものを削除)はgetView()にありません。 – user370305

0

アダプターでnotifyDataSetChanged()を使用すると、リスト内のすべての項目が自動的にリロードされます。あなただけの古いアイテムを削除することができ、その後

あなたは17.00からいくつかのより詳細な説明を見つけて、上thisグーグルIOビデオ

関連する問題