VirtualList item selection / click listener

Maybe this can give you an idea.
Each div you are going to include corresponds to a specific item, and each one will have its own listener.

VirtualList<String> list = new VirtualList<>();
list.setItems("item1","item2", "item3","item4");
list.setRenderer(renderer());
super.add(list);
public static ComponentRenderer<Div, String> renderer() {
   final SerializableBiConsumer<Div, String> items = (div, item) -> {
       div.addClickListener(event -> {
           Notification.show("Hello " + item);
       });
       div.add(new Span("Hello  " + item));
    };
    return new ComponentRenderer<>(Div::new, items);
}

And using details maybe

public static ComponentRenderer<Div, String> renderer() {
    final SerializableBiConsumer<Div, String> items = (div, item) -> {
        div.addClickListener(event -> {
            Notification.show("Hello " + item);
        });
        final Details details = new Details();
        details.add(new Span("Hello: " + item));
        div.add(details);
    };
    return new ComponentRenderer<>(Div::new, items);
}