Here's a short excerpt of Chapter 9 Lazy Loading of my book Data-Centric Applications with Vaadin 8.
The following is a simple UI component that shows how to implement this type of infinite lazy loading:
public class LazyLoadingVerticalLayout extends Composite {
private CssLayout content = new CssLayout();
private Button button = new Button("Load more...");
private int offset;
private int pageSize;
public LazyLoadingVerticalLayout(int pageSize) {
this.pageSize = pageSize;
button.setStyleName(ValoTheme.BUTTON_BORDERLESS_COLORED);
VerticalLayout mainLayout = new VerticalLayout(content, button);
setCompositionRoot(mainLayout);
button.addClickListener(e -> loadMore());
loadMore();
}
public void loadMore() {
List<Call> calls = CallRepository.find(
offset, pageSize, "", new HashMap<>());
if (calls.size() < pageSize) {
button.setVisible(false);
}
calls.stream()
.map(call -> new Label(call.toString()))
.forEach(content::addComponent);
offset += pageSize;
}
}
Notice how the loadMore method keeps adding components to the content layout until there are no more results to add, at which point the Load more... button is hidden from the UI.
The following screenshot shows this component in action:
You can learn more about lazy loading and many other topics related to web development with Vaadin in my book Data-Centric Applications with Vaadin 8 available at amazon.com, packtpub.com, and many other online bookstores.
Related Posts
Vaadin
January 18, 2019
0
Comments