13

リストアダプターを使用してさまざまな店舗を表示しています。誰かが店舗を選択すると、その画面でお気に入りに店舗を追加できる新しいアクティビティに移動します。

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 を呼び出し、名前とステータス配列を更新します。

このコードでは、リストは実際には更新されません...

4

4 に答える 4

32

onCreate()あなたはあなただけにAdapterを設定するべきです、あなたの中であなたはただ新しいデータのコレクションでonResume()呼び出す必要がありました。adapter.notifyDataSetChanged()これにより、ListViewが新しいデータコレクションで更新されます。

于 2012-01-25T04:47:01.580 に答える
4

次のコードを使用します。

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

これが役立つと思います。

ありがとう....

于 2012-03-22T06:16:26.903 に答える
1

まず、ストアのリストを arraylist に追加する必要があります。この配列リストADAPTERに送信してから、リスト ビューに追加します。

 list.setAdapter(adapter);

店舗リストが表示されます。そこをonListItemClickクリックするとlistItemIDが取得されます。リストアイテムIDを使用することで、このようなインテントを与えることができます

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

Java Bean の /setter および getter メソッド クラスを使用します。getter メソッドを static として取得し、子アクティビティで作成したストア名を設定します。呼び出されたメソッドをオーバーライドしますonBackPressed()。そのメソッド内に書き込みます

setResult(RESULT_OK);
finish();

onActivityForResult()親クラスのメソッドを取得します。そのメソッドの中で

 arraylist.add(javabeanClassname.getName());

その配列リストをに追加しAdapter、コードを記述します

 list.setAdapter(adapter);
于 2012-01-25T06:49:46.177 に答える
-1

新しいビューを listView に追加する前に、以前のビューをすべて削除します

listView.removeAllViews(); 

次に、新しい値を持つアダプター クラスを追加します。2 番目のアクティビティから戻ったときに値が更新され、このコードが呼び出されていることを確認してください。

于 2012-01-25T04:41:53.810 に答える