在 JavaFX 中的 ListView 中过滤项目

Asa*_*lid 3 java search listview javafx

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

我想在 JavaFX 应用程序的 ListView 中使用此功能

小智 6

您的问题可以通过两个步骤来解决:将 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);
        });
    }));
Run Code Online (Sandbox Code Playgroud)