我是一个JavaFx客户端。我使用具有ObservableSet作为字段的bean作为模型。 我想将这些数据显示到ListView中,我无法将我的字段类型更改为ObservableList。
我认为我应该编写一种适配器,以使我的ObservableSet适应ObservableList(因为ListView要求)。
使用ObservableList代码是:
listView.setItems(myBean.getMyEntitiesList());
我需要以相同的方式设置项目,因为数据列表来自服务器,所以我需要在数据到达时更新Ui。
有人能够就如何实现这种类型的适配器给我一些想法吗?
答案 0 :(得分:3)
您可以向集合添加侦听器,并在更改时更新列表:
ObservableList<T> items = FXCollections.observableArrayList(myBean.getMyEntitiesList());
myBean.getMyEntitiesList().addListener((Change<? extends T> change) -> {
if (change.wasAdded()) {
items.add(change.getElementAdded());
}
if (change.wasRemoved()) {
items.remove(change.getElementRemoved());
}
});
listView.setItems(items);
显然,将T
替换为列表/集合中实际类型的元素。