ListView过滤和排序
过滤
textField.textProperty().addListener((observable, oldValue, newValue) -> { FilteredList<DataPro> filtered = observableList.filtered(dataPro -> dataPro.getName().contains(newValue)); listView.setItems(filtered); });
排序
// 升序 asc.setOnAction(event -> { // 务必创建一个变量接收排序后的数据,以便恢复原数据 SortedList<DataPro> sorted = observableList.sorted((Comparator.comparingInt(DataPro::getAge))); listView.setItems(sorted); // 不建议使用这种方式,这种方式会修改原来的数据 observableList.sort((Comparator.comparingInt(DataPro::getAge))); }); // 降序 desc.setOnAction(event -> { SortedList<DataPro> sorted = observableList.sorted((o1, o2) -> o2.getAge() - o1.getAge()); listView.setItems(sorted); // 不建议使用这种方式,这种方式会修改原来的数据 observableList.sort((o1, o2) -> o2.getAge() - o1.getAge()); });
复原
listView.setItems(observableList);