InfiniteScroll
De InfiniteScroll component in webforJ laadt automatisch meer inhoud als gebruikers naar beneden scrollen, waardoor paginering niet nodig is. Dit creëert een soepele ervaring voor lijsten, feeds en gegevensrijke weergaven door inhoud alleen te laden wanneer dat nodig is.
Wanneer gebruikers de onderkant van scrollbare inhoud bereiken, activeert InfiniteScroll een gebeurtenis om meer gegevens te laden. Terwijl nieuwe inhoud wordt geladen, toont het een Spinner met aanpasbare tekst om aan te geven dat er meer items onderweg zijn.
Toestandbeheer
De InfiniteScroll component geeft evenementen af en beheert de interne toestand om te helpen beheren hoe en wanneer inhoud wordt geladen.
Toon Code
- InfiniteScrollView.java
- infinitescroll.css
Om meer gegevens op te halen wanneer de gebruiker scrollt, gebruik de onScroll() of addScrollListener() methode om een listener te registreren. Binnen de listener laad je doorgaans extra inhoud en roep je update() aan om de toestand van InfiniteScroll te verversen.
infiniteScroll.onScroll(event -> {
infiniteScroll.add(new Paragraph("Geladen item"));
infiniteScroll.update();
});
Zodra alle inhoud is geladen, markeer je de scroll als voltooid om verdere triggers te voorkomen. Na het instellen van voltooid, vergeet niet om update() aan te roepen om de nieuwe toestand toe te passen:
infiniteScroll.setCompleted(true);
infiniteScroll.update();
Dit schakelt verder oneindig scrollgedrag uit.
Je kunt deze vlag resetten met setCompleted(false) als je later de gebruiker toestaat om meer inhoud te laden (bijv. na een verversing).
Aanpassing van de laadindicator
Standaard toont InfiniteScroll een ingebouwde laadindicator - een kleine geanimeerde Spinner samen met een “Gegevens laden” tekst. Je kunt de weergegeven tekst wijzigen door een aangepaste boodschap door te geven aan de InfiniteScroll constructor of door setText() te gebruiken.
InfiniteScroll infiniteScroll = new InfiniteScroll("Meer records ophalen...");
infiniteScroll.setText("Meer items laden...");
Op dezelfde manier kun je het Icon dat tijdens het laden wordt weergegeven aanpassen met setIcon().
Toon Code
- InfiniteScrollLoadingView.java
- infinitescroll.css
Volledige aanpassing
Als je zowel de Spinner als de tekst volledig wilt vervangen door je eigen markup,
kun je inhoud rechtstreeks in de speciale inhoudsslot toevoegen met addToContent().
Wanneer je het inhoudsslot vult, vervangt het volledig de standaard laadindeling.
Toon Code
- InfiniteScrollCustomLoadingView.java
- infinitescrollcustom.css