2012-01-25 6 views
11

私は別の店舗を表示するためにリストアダプターを使用しています。誰かが店舗を選択したときに、その店舗をお気に入りの店舗に追加できる新しいアクティビティーに移動します。Android onResume更新リストアダプター

finish();を呼び出す戻るボタンがあり、リストビューで画面に戻ります。

ここで問題は、リストビューが更新されていない(つまり、お気に入りがすでにお気に入りに追加されていることを示していない)ということです。

@Override 
public void onResume() { 
    super.onResume(); 
    list.setAdapter(null);  
    updateMyList(); 
    adapter=new LazyAdapter(this, ((String[])names.toArray(new String[0])), 
     ((String[])status.toArray(new String[0]))); 
    list.setAdapter(adapter); 
} 

updateMyList()は、サーバAPIを呼び出して、名前とステータスアレイを更新します。私はこのコードが、運を試してみました。

このコードのリストは本当に

listView.removeAllViews(); 

以前のすべてのビューを削除してから新しい値をアダプタクラスを追加し、リストビューに新しいビューを追加する前に...

+0

http://stackoverflow.com/a/17333384/596555 – boiledwater

答えて

29

onCreate()にのみアダプターを設定してください。onResume()の中には、新しいデータのコレクションでadapter.notifyDataSetChanged()を呼び出すだけでした。これにより、新しいデータのコレクションでListViewが更新されます。

0

を更新しません。 1つ目は、2番目のアクティビティから戻ってくる間に値が更新されていることを確認し、このコードが呼び出していることです。

1

uはArrayListに店のリストを追加する必要がまず第一に、 はアダプターにこの配列リストを提出し、それは店が表示されます

list.setAdapter(adapter); 

リストビューに追加しますリスト;取るonListItemClickをクリックしてくださいあなたはlistItem Idを取得します。リストアイテムのIDを使用してuがJavaの豆/ setterメソッドとgetterメソッドのクラスを取り、この

Intent intent=new Intent(getApplicationContext(),------.class); 
    startActivityForResult(intent); 

のような意図を与えることができます。 getterメソッドを静的変数とし、子アクティビティで作成したストア名を設定します。オーバーライドメソッドonBackPressed()と呼ばれます。そのメソッドの内部で

setResult(RESULT_OK); 
finish(); 

が親クラスのメソッドonActivityForResult()を取る書きます。私は、これはあなたを助けるだろうと思い

myList.clear(); 
myList.add("your array list items");    
setListAdapter(adapter); 
adapter.notifyDataSetChanged(); 

:その方法

arraylist.add(javabeanClassname.getName()); 

の内側Adapterにその配列リストを追加し、コード

list.setAdapter(adapter); 
4

このコードを使用することを記述します。

ありがとう....

関連する問題