tableview: обнаружение изменений в отфильтрованном списке - PullRequest
0 голосов
/ 24 июня 2018

У меня есть таблица, содержащая несколько столбцов и строк, в которые можно добавлять новые строки, существующие строки можно редактировать и удалять.Существует столбец действия, в котором соответствующее значение строки будет истинным, если произойдет какое-либо изменение.И моя таблица фильтруется (сортируется).Теперь я пытаюсь обнаружить изменения в моей таблице, такие как редактирование, добавление или удаление.Я попытался сделать это через ListChangeListener, и вот мой связанный код проблеск моей таблицы.

enter image description here

private ObservableList<ModelBrFloor> floordata =FXCollections.observableArrayList(floor ->
        new Observable[] {
           floor.FloorNameProperty(),
           floor.FloorCodeProperty(),
        floor.FloorNumberProperty()

        });
private ObservableList<ModelBrFloor> getInfo(ModelBrBuilding building) {


            floordata.addListener((ListChangeListener.Change<? extends ModelBrFloor> c) -> {
                   while (c.next()) {
                       if (c.wasAdded()) {
                           System.out.println("Added:");
                           c.getAddedSubList().forEach(System.out::println);
                           System.out.println();
                       }
                       if (c.wasRemoved()) {
                           System.out.println("Removed:");
                           c.getRemoved().forEach(System.out::println);
                           System.out.println();
                       }
                       if (c.wasUpdated()) {
                            //have to make column value true here
                           System.out.println("Updated:");
                           floordata.subList(c.getFrom(), c.getTo()).forEach(System.out::println);
                           System.out.println();
                       }
                   }
                });
            floordata = FXCollections.observableArrayList(implementation.getFloor(building));

            FilteredList<ModelBrFloor> filteredData = new FilteredList<>(floordata,p->true);
            txtFloorName.textProperty().addListener((observable,oldValue,newValue)->{
                filteredData.setPredicate(BCode->{
                if(newValue== null||newValue.isEmpty())
                {   return true;

                }
                String lowerCasefilter=newValue.toLowerCase();
                if(BCode.getFloorName()!=null)
                 if (BCode.getFloorName().toLowerCase().contains(lowerCasefilter)){
                    return true;
                }
                return false;
                });

            });
            txtFloorShort.textProperty().addListener((observable,oldValue,newValue)->{
            filteredData.setPredicate(BCode->{
                if(newValue== null || newValue.isEmpty())
                    return true;
                String lowerCasefilter= newValue.toLowerCase();
                if(BCode.getFloorCode()!=null)
                if(BCode.getFloorCode().toLowerCase().contains(lowerCasefilter))
                    return true;
                return false;
            });

            });
            txtFloorNo.textProperty().addListener((observable,oldValue,newValue)->{
                filteredData.setPredicate(BCode->{
                    if(newValue== null || newValue.isEmpty())
                        return true;
                    int val=BCode.getFloorNumber();
                    if(String.valueOf(val).equals(newValue))
                        return true;
                    return false;
                    });
            });

            SortedList sortedData = new SortedList(filteredData);

            sortedData.comparatorProperty().bind(tableBuilding.comparatorProperty());
            return sortedData;

        }

Моя проблема в том, что этот код хорошо компилируется, но ничего не печатает (также не уверен, как получить отредактированную строку, чтобы превратить false в true).Может ли кто-нибудь помочь мне в этом отношении, пожалуйста?

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