zu aktualisieren, wenn ich einen klassischen Adapter mit einem ListView verwenden müssen, ich meine Daten im Listview wie folgt aktualisiert:bester Weg, um Daten mit einem RecyclerView Adapter
myAdapter.swapArray(data);
public swapArray(List<Data> data) {
clear();
addAll(data);
notifyDataSetChanged();
}
Ich mag würde wissen, was das Beste ist, üben für eine RecyclerView. Denn in einem RecyclerView Adapter können Sie keine clear
und addAll
wie in ListView tun.
So versuchte ich nur mit einem notifyDataSetChanged
, aber es hat nicht funktioniert. Dann habe ich versucht, mit einem swapAdapter auf meiner Ansicht:
List<Data> data = newData;
MyRecyclerAdapter adapter = new MyRecyclerAdapter(data);
// swapAdapter on my recyclerView (instead of a .setAdapter like with a classic listView).
recyclerViewList.swapAdapter(adapter, false);
Aber mit dieser letzten Lösung, ich habe noch eine neue Instanz von meinem Adapter zu schaffen, und ich fühle mich wie es nicht die beste Lösung ist. Ich sollte nur in der Lage sein, meine Daten ohne eine neue MyRecyclerAdapter
zu ändern.
Es ist besser (für Animationen und Leistung), wenn Sie detaillierte Benachrichtigungsereignisse (z.notfiyItemInserted/Removed/Moved/Changed). Schauen Sie sich auch die SortedList-Klasse an, die diese Werte für Sie berechnen kann, wenn Sie ein Sortierkriterium in Ihrer Liste haben. – yigit
Ich arbeite an jeder Änderung in meinem Adapter notifyDataSetChanged(); – marlonpya