一定間隔でデータを追加するリストビューがありますが、完全なリストが更新されるため、アダプターを再度設定したくありません。完全なリストを更新せずに項目を追加する方法はありますか。
前もって感謝します。
一定間隔でデータを追加するリストビューがありますが、完全なリストが更新されるため、アダプターを再度設定したくありません。完全なリストを更新せずに項目を追加する方法はありますか。
前もって感謝します。
使用できます
adapter.add(<new data item>); // to add data to your adapter
adapter.notifyDatasetChanged(); // to refresh
たとえば。
ArrayAdapter<String> adapter;
public void onCreate() {
....
....
ArryList<String> data = new ArrayList<String>();
for(int i=0; i<10; i++) {
data.add("Item " + (i+1));
}
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data);
setListAdapter(adapter);
}
これで、リストに追加する新しいデータがあるときはいつでも、次のことができます。
private void appendToList(ArrayList<String> newData) {
for(String data : newData)
adapter.add(data);
adapter.notifyDatasetChanged();
}
これを使用できます。notifyDataSetChanged()
ただし、notifyDataSetChanged()は、アダプタで追加、挿入、削除、およびクリア関数を使用する場合にのみ、ArrayAdapterに対して機能します。
adapter.notifyDataSetChanged()
リストを更新するために呼び出すことができます。
アダプターgetView()
はさまざまなタイミングで呼び出され、特定のパターンはありません。したがって、ビューは更新が必要なときにいつでもListView
更新されます。
しかし、私が見る限り、あなたは を探していadapter.notifyDataSetChanged
ます。ワークフローは次のようになります。
Set adapter to ListView
Add data to adapter`
Call notifyDataSetChanged() on adapter.
少なくとも、リストがリストの最初の項目に戻るのを防ぎます。それが役立つことを願っています。