Ich habe 2 viewTypes in meinem RecyclerView - A und BHinzufügen von Ansichten RecyclerView dynamisch
A aus Adapter sind Daten erhält. B ist eine benutzerdefinierte Ansicht mit völlig anderem Layout und macht einen eigenen Web-Service-Aufruf für Daten.
Also habe ich 2 ViewHolder insgesamt (eins für A, eins für B). Meine Anforderung besteht darin, B nur anzuzeigen, wenn alle Daten erfolgreich vom Server abgerufen wurden. Also mache ich zunächst die Sichtbarkeit der B-Ansicht auf GONE und setze sie auf VISIBLE zurück, wenn Daten angezeigt werden sollen.
Das Problem mit diesem Ansatz ist, dass Teiler (eingestellt mit ItemDecoration) für B-Ansichten angezeigt werden, selbst wenn der Inhalt GONE ist. Dies verursacht große Lücken in der RecyclerView, während B-Ansichten geladen werden. Wenn sie nicht geladen werden können, entferne ich B-Ansichten, sodass dieser Teil kein Problem darstellt.
Blick auf die ItemDecoration API Ich glaube nicht, dass es eine Möglichkeit gibt, Teiler bedingt anzuzeigen.
So suche ich nach einer Möglichkeit, die B-Ansichten außerhalb von RecyclerView zu erstellen und dann die Ansicht selbst zu RecyclerView hinzuzufügen. Ist es möglich ? Oder gibt es eine bessere Lösung für mein Problem?
Eine mögliche Problemumgehung besteht darin, ItemDecoration zu löschen und stattdessen Ränder zu den Ansichten A und B hinzuzufügen und den Rand von B von 0 auf einen höheren Wert zurückzusetzen, wenn Daten empfangen werden. Ich habe diesen Ansatz nicht getestet, aber ich möchte es vermeiden, weil ich zu viele viewTypes habe (A und B sind nur zwei davon) und die meisten davon sind benutzerdefinierte Ansichten, deren Layout ich ändern muss.