2016-01-21 51 views
2

我有一個JavaFx客戶端。我使用的模型是一個ObservableSet as字段的bean。 我想顯示這些數據到一個ListView中,我不能改變我的領域種類ObservableList。JavaFx ObservableSet適配器

我想我應該寫一種適配器爲了適應我的ObservableSet ObservableList(因爲ListView要求)。

使用ObservableList代碼:

listView.setItems(myBean.getMyEntitiesList()); 

我需要因爲數據列表卡梅斯從服務器懶,所以我需要的是當數據到達的UI更新設置以同樣的方式的項目。

有人能夠給我一些關於如何實現這樣的適配器的想法嗎?

回答

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與任何在你的列表/集合的元素的實際類型是。

+0

很好的提示,我嘗試過,但行拋出一個異常:在線程異常「的JavaFX應用程序線程」顯示java.lang.NullPointerException \t在com.sun.javafx.collections.ObservableSetWrapper $ 1.hasNext(ObservableSetWrapper.java:214 ) \t在java.util.AbstractCollection.addAll(AbstractCollection.java:343) \t在javafx.collections.ModifiableObservableListBase.addAll(ModifiableObservableListBase.java:99) \t在javafx.collections.FXCollections.observableArrayList(FXCollections.java: 341) – drenda

+0

想必你知道如何調試空指針異常。任何人都無法從你顯示的堆棧跟蹤片段中調試它。如果你用[MCVE]編輯你的問題,我可以把答案放在你的背景中。 –

+0

你是對的@James_D,不幸的是,有限的字符作爲評論,並將其添加到問題中它似乎不是一個好主意。 – drenda