web-dev-qa-db-ja.com

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

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

13
James Gu

onCreate()にのみAdapterを設定する必要があります。onResume()内では、新しいデータコレクションを使用してadapter.notifyDataSetChanged()を呼び出す必要があります。これにより、ListViewが新しいデータコレクションで更新されます。

31
Lalit Poptani

このコードを使用します:

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

これはあなたを助けると思います。

ありがとう....

4
user4232

まず、ストアのリストをarraylistに追加する必要があります。これを送信すると、array list[〜#〜] adapter [〜#〜]に追加されます。リストビュー

_ list.setAdapter(adapter);
_

ストアリストが表示されます。 onListItemClickをクリックすると、listItemIdが取得されます。リストアイテムIDを使用することにより、uはこのような意図を与えることができます

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

Java bean/setterおよびgetterメソッドクラスを取得します。getterメソッドを静的として取得し、子アクティビティで作成したストア名を設定します。onBackPressed()というメソッドをオーバーライドします。そのメソッドの内部に書き込みます

_setResult(RESULT_OK);
finish();
_

親クラスのメソッドonActivityForResult()を取ります。そのメソッドの内部

_ arraylist.add(javabeanClassname.getName());
_

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

_ list.setAdapter(adapter);
_
1
chinna

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

listView.removeAllViews(); 

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

0
Tofeeq Ahmad