Ich habe eine App, die den TV-Guide für eine Liste von Kanälen zeigt. Meine Benutzeroberfläche besteht aus einer Menge benutzerdefinierter Ansichten mit unterschiedlichen Breiten, die die TV-Programme anzeigen. Alle diese benutzerdefinierten Ansichten werden zu einem horizontalen Bildlauf hinzugefügt, der zu einem Bildlauf hinzugefügt wird, sodass meine Ansichten in zwei Dimensionen von links nach rechts und von oben nach unten blättern können. Nieder. Es funktioniert alles gut, bis ich hinzufügen viele Ansichten hinzufügen und es beginnt sehr langsam zu verlangsamen. Also ich brauche eine Möglichkeit, Ansichten wie listiew in einer Scrollview zu recyceln gibt es vielleicht eine benutzerdefinierte scrollview, die dies tut, oder jemand hat eine Idee, wie dies zu tun, ist seltsam, dass Scrollview nicht durch einen Adapter wie Gridview und Listview gesichert wird.
Ich habe etwas Ähnliches gemacht, nur meine Ansichten waren nicht wie deine verbunden, aber sie waren alle unterschiedlich groß.
Zuerst müssen Sie definieren, ob Ihr gesamtes Gebiet (nicht nur der Bildschirm) eine definitive oder dynamische Anzahl Ihrer benutzerdefinierten Ansichten hat.
Wenn Sie eine definitive Anzahl von Ansichten und deren Positionen haben, sollten Sie ihre Positionskarte mit einer Liste von Rect's erstellen (Rect hat eine gute Funktion, ob der xy Punkt gehört). Dann definieren Sie das Maximum der Ansichten, die auf Ihrem Bildschirm sichtbar sind. Damit dies ohne konstantes Laden funktioniert, sollten Sie maximale sichtbare Ansichten + mindestens eine Linie von Grenzansichten von Gesamtobjekten haben. Nach all dem sollten Sie leicht Ihr eigenes Positionierungssystem haben, wo Sie Ansichten laden, die in den Grenzen Ihres Bildschirms liegen, und etwas Overhead (Zweck ist, dass Ihre Benutzer einen fließenden Übergang haben sollen, wenn Sie mindestens eine Länge scrollen) Sie müssen einige in der gleichen Zeit laden, die Sie entladen (lesen Sie Wiederverwendung / Objekte nicht entsorgen und erstellen Sie sie auf Scroll-Ereignissen) und platzieren Sie sie nach Ihren Bedürfnissen.
Und wenn Sie bestimmen wollen, welche Ansichten sichtbar sein sollen, gehen Sie einfach durch die Liste und fragen Sie, ob Views Rect sich mit Ihrem Rect des zu ladenden Bereichs überschneidet.
Ich hoffe, dieses Bild hilft ein bisschen mehr
Ich weiß, es klingt ein wenig verwirrend und schwierig zu implementieren, aber Sie haben keine einfache Frage gestellt :) Hoffe, das hilft und genießt Ihre Arbeit.
Eine ScrollView, die von einem Adapter gesichert wird und Ansichten recycelt, ist ein ListView mit einigen zusätzlichen optionalen Features.
Vielleicht möchten Sie eine HorizontalScrollView, die von einem Adapter unterstützt wird? Wenn Sie nach HorizontalListView suchen, erhalten Sie einige Ergebnisse, z. B .: Ссылка .
Tags und Links android view scrollview adapter