Во-первых, я создал таблицу. Добавлены значения. Затем добавлен слушатель в текстовое поле2 для поиска (фильтрации). И у меня есть функция getStatistics для получения общей суммы значений в одном столбце. Но он не работал после фильтрации данных. Как я могу получить общую сумму значений после фильтрации?Javafx tableview получить значения из отфильтрованного списка
ObservableList<CurrentreservsController.userdata> data;
data = FXCollections.observableArrayList();
.......
.......
FilteredList<userdata> filt = new FilteredList<>(data, p ->true);
textfield2.textProperty().addListener((observable, oldValue, newValue) -> {
filt.setPredicate(userdata -> {
if (newValue == null || newValue.isEmpty()) {
return true;
}
String lowerCaseFilter = newValue.toLowerCase();
if (userdata.otag.toString().toLowerCase().contains(lowerCaseFilter)) {
return true; // Filter matches first name.
} else if (userdata.cm.toString().toLowerCase().contains(lowerCaseFilter)) {
return true; // Filter matches last name.
}
return false; // Does not match.
});
});
SortedList<userdata> sortedData = new SortedList<>(filt);
sortedData.comparatorProperty().bind(tablesettings.comparatorProperty());
tablesettings.setItems(sortedData);
seartol=0;
getStatistics();
getStatistic функция
private void getStatistics() {
seartol=0;
for (userdata product : data) {
seartol = seartol + Integer.parseInt(product.tol.getValue().toString());
}
label1.setText("Total sum: "+seartol);
}
upsss. Благодарю . Он работал – Gpear
@Gpear: Если решение работает для вас, подумайте о принятии его вместо того, чтобы просто оставить комментарий. Это облегчает другим обнаружение того, что найдено рабочее решение. – fabian