Hallo,
ich hab ein ListView mit einer ObservableList gefüllt. Wenn ich dort ein neues Element erstelle, wird es der Liste hinzugefügt. Aber wenn ich es eins entfernen will, passiert in der Liste nichts.
Wenn ich zudem ein refresh() auf die Liste aufrufe passiert sowas hier (links vorher/rechts nachher):


Ich kann mir das Verhalten nicht so recht erklären.
Jemand ne Idee?
mfg TWS
ich hab ein ListView mit einer ObservableList gefüllt. Wenn ich dort ein neues Element erstelle, wird es der Liste hinzugefügt. Aber wenn ich es eins entfernen will, passiert in der Liste nichts.
Wenn ich zudem ein refresh() auf die Liste aufrufe passiert sowas hier (links vorher/rechts nachher):


Ich kann mir das Verhalten nicht so recht erklären.
Jemand ne Idee?
Java:
public class Controller
{
private Stage stage;
private Settings settings;
private BackupDeamon backupDeamon;
@FXML private ListView<BackupEntry> backupList;
public void init(Stage stage) throws IOException
{
this.stage = stage;
this.settings = loadOrCreateSettings();
this.backupDeamon = new BackupDeamon(settings);
backupList.setItems(backupDeamon.getBackups().getEntries());
backupList.setCellFactory(new Callback<ListView<BackupEntry>, ListCell<BackupEntry>>()
{
@Override
public ListCell<BackupEntry> call(ListView<BackupEntry> list)
{
return new BackupListCell();
}
});
}
public void restoreBackup(BackupEntry backup)
{
(...)
}
public void removeBackup(BackupEntry backup)
{
try
{
backupDeamon.removeBackup(backup);
}
catch (IOException e)
{
e.printStackTrace();
}
backupList.refresh();
}
class BackupListCell extends ListCell<BackupEntry>
{
BackupData cached;
@Override
public void updateItem(BackupEntry item, boolean empty)
{
super.updateItem(item, empty);
if (item != null)
{
if (cached == null)
{
cached = new BackupData(Controller.this, item);
}
String str = item.time.format(Utils.READABLE_FORMATTER);
if (item.latest) str += "*";
cached.setInfos(str);
setGraphic(cached.root);
}
}
}
}
mfg TWS