I am experiencing weird behaviour with my filtering implementation
Essentially I have a textfield from which I want to filter a list of buttons depending on their displayName.
Atm it’s just super simple, I am filtering with String.startsWith.
For that to work, I implemented it so that on every ValueChangeEvent
of the searchBarField
I am re-setting the filter
in the ListDataProvider.
The JiraOptionListElement::getDisplayNameForFiltering returns a displayName.toLowerCase(); String
My code:
TextField searchBarField = new TextField("Search bar");
searchBarField.setValueChangeMode(ValueChangeMode.ON_CHANGE);
this.jiraOptionsDataProvider = DataProvider.ofCollection(options); // ListDataProvider
searchBarField.addValueChangeListener(event -> {
log.trace("Change Event");
log.trace("Value of textfield event[{}]", event.getValue().toLowerCase());
jiraOptionsDataProvider.setFilter(JiraOptionListElement::getDisplayNameForFiltering, displayName -> {
log.trace("element displayname [{}]", displayName);
return displayName.startsWith(event.getValue().toLowerCase());
});
});
jiraOptionList.setDataProvider(jiraOptionsDataProvider); // Virtual List of JiraOption Elements
jiraOptionList.setRenderer(jiraOptionListRenderer);
Thanks for any help in advance