FilteredList содержит элементы, но они не будут отображаться в ListView - PullRequest
0 голосов
/ 05 мая 2019

Итак, я работаю над Java-программой, которая может хранить список студентов в TableView.Также есть опции для сортировки этого TableView и для отображения только учеников с оценкой A в ListView, которая появляется в новом окне.

Первые два варианта работают, но у меня проблема с фильтрацией ListView.Когда я нажимаю на кнопку, которая должна открыть новое окно с отфильтрованным ListView, ListView становится пустым.

Я не знаю, почему это происходит.

Я попытался инициализировать некоторые тестовые объекты и сохранить их в FilteredList, который работает нормально, но когда я сохраняю объекты из TextField в FilteredList, они фактически находятся в List, но они не появляются в ListView.

Это код из основного контроллера (метод showAStudents)

public void showAStudents() {
        Dialog<ButtonType> dialog = new Dialog<>();
        dialog.initOwner(anchorPane.getScene().getWindow());
        dialog.setTitle("A Students");
        dialog.setHeaderText("This is list of A Students");
        FXMLLoader fxmlLoader = new FXMLLoader();
        fxmlLoader.setLocation(getClass().getResource("aStudents.fxml"));
        try {
            dialog.getDialogPane().setContent(fxmlLoader.load());
        }

        catch (IOException e) {
            e.printStackTrace();
        }

        dialog.getDialogPane().getButtonTypes().add(ButtonType.CLOSE);

        dialog.showAndWait();
        AStudentsController aStudentsController = 
        fxmlLoader.getController();
        aStudentsController.filterAStudents(students);
}

Это код из AStudentsController (метод фильтрации студентов)

public void filterAStudents(ObservableList<Student> students) {
        FilteredList<Student> filteredList = new FilteredList<>(students, 
        aStudentsPredicate);
        Iterator<Student> iterator = filteredList.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next()); /* This println is showing 
                                                    correctly filteredList 
                                                    content */
        }

        listView.getItems().addAll(filteredList);
    }

Этот вывод на консоль показывает всех студентов соценка в консоли, но они не отображаются в ListView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...