首先我创建了表格。并增加了价值。然后将监听器添加到textfield2进行搜索(过滤)。我有一个getStatistics函数,用于获取一列中的值的总和。但是在过滤数据后它没有工作。过滤后如何获得值的总和?
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);
}
答案 0 :(得分:0)
您只需根据已过滤的列表而非源列表计算统计信息。
private void getStatistics() {
seartol=0;
for (userdata product : filt ) {
seartol = seartol + Integer.parseInt(product.tol.getValue().toString());
}
label1.setText("Total sum: "+seartol);
}