observablelist中的更新项未反映在UI中

时间:2015-01-29 23:59:43

标签: data-binding javafx

我从ObservableList中获得了一个过滤后的TableView填充,当我从ObservableList更新项目时,项目在UI中没有更新,但是如果我搜索到表格,则会出现项目。

tbcNombre.setCellValueFactory(new PropertyValueFactory<>("nombre"));
tbcApellidos.setCellValueFactory(new PropertyValueFactory<>("apellidos"));
tbcAsistencia.setCellValueFactory(new Callback<CellDataFeatures<Alumno,  Alumno>, ObservableValue<Alumno>>() {
   @Override
   public ObservableValue<Alumno> call(CellDataFeatures<Alumno, Alumno>     features) {
      return new ReadOnlyObjectWrapper(features.getValue());
     }
   });

//datamodel.getAlumnos() returns an observablelist
datosFiltrados = new FilteredList<>(datamodel.getAlumnos());
listaOrdenada = new SortedList<>(datosFiltrados);
listaOrdenada.comparatorProperty().bind(tbvAlumnos.comparatorProperty());
tbvAlumnos.setItems(listaOrdenada);

当我使用搜索功能(在textfieldbuscar中输入内容)tableview更新,我可以看到更新项目):

    txtBuscar.textProperty().addListener((observable, oldValue, newValue) -> {
        datosFiltrados.setPredicate(alumnoAux -> {
            boolean aux = false;

            if (StringUtils.isEmpty(newValue)) {
                aux = true;
            } else if (alumnoAux.toString().toLowerCase().contains(newValue.toLowerCase())) {
                aux = true;
            }

            return aux;
        });

        if (datosFiltrados.size() == 0) {
            btnDetalles.setDisable(true);
            btnBorrar.setDisable(true);
        } else {
            btnDetalles.setDisable(false);
            btnBorrar.setDisable(false);
        }
    });

0 个答案:

没有答案