在JavaFX中的ListView中过滤项目

时间:2017-07-11 22:45:32

标签: java listview search javafx

我需要知道如何在TextField中输入字母时在JavaFX中过滤ListView中的项目。我试图在不同的谷歌链接的帮助下使用FilteredList,但没有得到结果。为了澄清,我发布了一张我想要的功能图片。 谢谢!

This feature I want in my ListView in JavaFX application

1 个答案:

答案 0 :(得分:1)

您的问题可以通过两个步骤解决:将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);
        });
    }));