I've got a filtered TableView populate from a ObservableList, when I update an item from ObservableList, item is not update in UI, but if I made a search into table, item appears.
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);
When I use search function (enter something into textfieldbuscar) tableview is update and I can see update item):
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);
}
});