Пропуск new Query<>( myDataProvider.getFilter() )
в ListDataProvider::size
ListDataProvider
имеет метод size(Query<T, SerializablePredicate<T>> query)
.
Поскольку поставщик данных хранит только исходный список элементов, простой метод size
без параметров не будет работать так, как вы хотели. Вы можете создать требуемый запрос, используя текущие фильтры вашего поставщика данных.
Я протестировал следующий код, и он работает:
// my own method, defined as value change listeners of any filter field
private void onFilterChange(){
ListDataProvider<Foo> dataProvider = (ListDataProvider<Foo>) grid.getDataProvider();
dataProvider.setFilter((item) -> {......}
// everytime after resetting the filter, check how many items now are displayed
int filteredSize = dataProvider.size(new Query<>(dataProvider.getFilter()));
int fullSize = dataProvider.getItems().size(); // this is how you get the size of all items
Notification.show(String.format("Now showing %d of %d items", filteredSize, fullSize));
}
Возможно, в будущем эта работа может быть немного проще: См. Запрос-запрос Добавьте метод filteredSize
к DataProvider
или ListDataProvider
# 7539 .