beim Aufruf notifyDataSetChanged
auf RecyclerView
es behält nicht die Scroll-Position und scrollt nach oben, gibt es eine Lösung, um seine Scroll-Position zu behalten?RecyclerView notifyDataSetChanged blättert zur obersten Position
Antwort
Sie können swapAdapter() und nach dem Anruf notifyDataSetChange() verwenden. Das funktioniert für mich.
Nicht sicher, ob dies Ihr Problem löst, aber ich hatte das gleiche Problem und es war, weil ich SetAdapter nach Benachrichtigung anrief. Also, nicht setAdapter nach Benachrichtigung aufrufen löste das Problem.
mAdapter.notifyItemRangeInserted(mAdapter.getItemCount(), list.size() - 1);
recyclerView.setAdapter(); // remove this line.
//Do this only when you're setting the data for the first time or when adapter is null.
Danke, es ist Arbeit –
Wenn Ihr RecyclerView Listenelement Elternteil hat „wrap_content“ Eigenschaft berechnet Recyclerview die Höhen wieder und blättert oben.
Es gibt zwei Lösungen:
- Geben Sie Ihre Größe ein konstanter Wert wie folgt aus:
layout_height="100dp"
Verwenden StaggeredGridLayoutManager wie folgt aus:
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL));
, wenn Sie wollen Ändern Sie Elemente mit Animationen, verwenden Sie die Methode notifyItemChanged in Fragm ent oder Aktivität. Nicht in Adapterklasse:
mRecyclerView.getAdapter().notifyItemChanged(position);
Die zweite Lösung ist effizienter und ich schlage vor, diese ein
Ja, Recycler-Ansicht berechnet die Höhe im Falle von "wrap_content", also fix setzt feste Layouthöhe oder Höhe auf "match_parent". – anp8850
RecycleViews auf jeder Variante von notifyDataSetChanged
wieder nach oben bewegen, wenn sie nicht über einen Layout-Manager haben. Hier ist ein Beispiel, wie man eins setzt.
recycleView.setLayoutManager(new LinearLayoutManager(context, OrientationHelper.VERTICAL, false));
Wie ich bin zu raten, was Sie tun, ist der Adapter mit dem RecyclerView
Zurücksetzen und dann ruft notifyDataSetChanged().
Sie müssen nur die dataList
an den Adapter vorbei dataList
in Adapter Verfahren wie Adapter vorbei update(dataList)
. Und in dieser Methode können Sie diese Liste zu Adapterliste wie;
public void update(ArrayList<Hashmap<String,String> list){
this.mList = list;
}
können Sie Position halten, indem sie vor notifyDataSetChanged speichern und dann glatt blättern, um gespeicherte Position rufen
final int currentVisibleItem = ((LinearLayoutManager) layourmanager).findFirstCompletelyVisibleItemPosition();
productListAdapter.notifyDataSetChanged();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if(currentVisibleItem>-1 && currentVisibleItem<lstProducts.size())
rv_products.scrollToPosition(currentVisibleItem);
}
}, 100);
- 1. RecyclerView blinkt nach notifyDatasetChanged()
- 2. RecyclerView notifyDataSetChanged IllegalStateException
- 3. notifyDataSetChanged auf RecyclerView android
- 4. notifyDataSetChanged funktioniert nicht auf RecyclerView
- 5. Android RecyclerView Adapter notifyDataSetChanged funktioniert nicht
- 6. Problem mit Aktualisierungsdaten von notifyDataSetChanged in RecyclerView
- 7. WebView in RecyclerView blinkt, wenn notifyDataSetChanged
- 8. Verwenden von notifyItemRemoved oder notifyDataSetChanged mit RecyclerView in Android
- 9. RecyclerView nicht oder aktualisieren aktualisieren, wenn notifyDataSetChanged Aufruf()
- 10. Scroll-Position auf RecyclerView setzen
- 11. Recyclerview keine Daten neu geladen, wenn notifyDataSetChanged() wird
- 12. RecyclerView - zur Position springen, dann nach oben scrollen
- 13. notifyDataSetChanged() - IndexOutOfBoundException
- 14. NotifyDataSetChanged oder NotifyItemRemoved verursachen leere Bereiche und Ghosting in RecyclerView
- 15. Do notifydatasetchanged onCreateViewHolder aufrufen, wenn RecyclerView verwendet wird
- 16. RecyclerView falsche Position gesetzt onBindViewHolder
- 17. RecyclerView: Artikel an Position hinzufügen
- 18. Tkinter Canvas Element zur obersten Ebene bewegen
- 19. notifyDataSetChanged(); funktioniert nicht in android
- 20. RecyclerView: java.lang.IndexOutOfBoundsException: Inkonsistenz erkannt. Ungültige Position
- 21. Automatisch zur nächsten Zeile in Recyclerview wechseln
- 22. ExpandableListView von RecyclerView bekommen Kind Position
- 23. Wie kann ich verhindern, dass eine Seite nach fehlgeschlagener Überprüfung zur obersten Position springt?
- 24. RecyclerView Drag & Drop-Position nicht funktioniert android
- 25. RecyclerView nicht über ein eigenes Feld in onBindViewHolder aktualisieren, nachdem notifydatasetchanged()
- 26. in ViewPager-Fragment, RecyclerView Adapter notifyDataSetChanged funktioniert nicht beim ersten Mal
- 27. FragmentPagerAdapter notifyDataSetChanged funktioniert nicht
- 28. Android notifyDataSetChanged
- 29. Recyclerview - Falsche Position in Arraylist onBindViewHolder
- 30. RecyclerView: Position abrufen und zu Aktivität wechseln
Sie eine Lösung gefunden? –
** Rufen Sie nicht 'notifyDataSetChanged()' auf dem 'RecyclerView' auf. Benutze die neuen Methoden wie 'notifyItemChanged()', 'notifyItemRangeChanged()', 'notifyItemInserted()', etc ... –
Ich habe notiereItemRangeInserted() versucht, aber selbst das scrollt nach oben. Irgendeine Idee? –