当我在TextField中键入letter时,我需要知道如何在JavaFX的ListView中过滤项目。我试图在不同的Google链接的帮助下使用FilteredList,但没有得到结果。为澄清起见,我正在发布所需功能的图片。
谢谢!
This feature I want in my ListView in JavaFX application
最佳答案
您可以通过两个步骤解决您的问题:将FilteredList设置为ListView,并将侦听器绑定到TextField。
//'myListView' is your ListView, 'myTextField' is your textfield
ObservableList<String> rawData= FXCollections.observableArrayList();
FilteredList<String> filteredList= new FilteredList<>(rawData, data -> true);
myListView.setItems(filteredList);
myTextField.textProperty().addListener(((observable, oldValue, newValue) -> {
filteredList.setPredicate(data -> {
if (newValue == null || newValue.isEmpty()){
return true;
}
String lowerCaseSearch=newValue.toLowerCase();
return String.valueOf(data.contains(lowerCaseSearch);
});
}));