InfiniteScroll
Die InfiniteScroll
-Komponente in webforJ lädt automatisch mehr Inhalte, während Benutzer nach unten scrollen, und beseitigt so die Notwendigkeit für die Paginierung. Dies schafft ein reibungsloses Erlebnis für Listen, Feeds und datenintensive Ansichten, indem Inhalte nur bei Bedarf geladen werden.
Wenn Benutzer den unteren Rand des scrollbaren Inhalts erreichen, löst InfiniteScroll
ein Ereignis zum Laden weiterer Daten aus. Während neuer Inhalt geladen wird, zeigt es einen Spinner
mit anpassbarem Text an, um anzuzeigen, dass weitere Elemente unterwegs sind.
Code anzeigen
- Java
- CSS
Zustandsverwaltung
Die InfiniteScroll
-Komponente gibt Ereignisse aus und verwaltet den internen Zustand, um zu helfen, wie und wann Inhalte geladen werden.
Um mehr Daten abzurufen, wenn der Benutzer scrollt, verwenden Sie die Methode onScroll()
oder addScrollListener()
, um einen Listener zu registrieren. Innerhalb des Listeners laden Sie typischerweise zusätzliche Inhalte und rufen update()
auf, um den Zustand von InfiniteScroll
zu aktualisieren.
infiniteScroll.onScroll(event -> {
infiniteScroll.add(new Paragraph("Gelaadener Artikel"));
infiniteScroll.update();
});
Sobald alle Inhalte geladen sind, markieren Sie das Scrollen als abgeschlossen, um weitere Auslösungen zu verhindern. Nach dem Setzen auf abgeschlossen, denken Sie daran, update()
aufzurufen, um den neuen Zustand anzuwenden:
infiniteScroll.setCompleted(true);
infiniteScroll.update();
Dies deaktiviert das weitere unendliche Scrollverhalten.
Sie können dieses Flag mit setCompleted(false)
zurücksetzen, wenn Sie später Benutzern erlauben, mehr Inhalte zu laden (z. B. nach einem Refresh).
Anpassung des Ladeanzeigen
Standardmäßig zeigt InfiniteScroll
eine eingebaute Ladeanzeige - einen kleinen animierten Spinner
zusammen mit einem Text „Daten werden geladen“. Sie können den angezeigten Text ändern, indem Sie eine benutzerdefinierte Nachricht an den Konstruktor von InfiniteScroll
übergeben oder setText()
verwenden.
InfiniteScroll infiniteScroll = new InfiniteScroll("Weitere Datensätze abrufen...");
infiniteScroll.setText("Mehr Artikel laden...");
Ebenso können Sie das während des Ladens angezeigte Icon
mithilfe von setIcon()
anpassen.
Code anzeigen
- Java
- CSS
Vollständige Anpassung
Wenn Sie sowohl den Spinner
als auch den Text vollständig durch Ihr eigenes Markup ersetzen möchten,
können Sie Inhalte direkt in den speziellen Inhaltsbereich mit addToContent()
einfügen.
Wenn Sie den Inhaltsbereich füllen, wird das Standard-Lade-Layout vollständig ersetzt.
Code anzeigen
- Java
- CSS