2017-03-15 61 views
0

我有一個ListView綁定ObservableList。最初,當空,ListView具有統一的顏色,如圖片所示:如何使ListView看起來與包含元素時相同?

enter image description here

添加元素到列表中後,它會充滿了細胞,有自己的顏色:

enter image description here

很顯然,我不希望它這樣的表現,所以這裏的問題:如何讓我的列表看起來像在第二張圖片,即使它是空的?

回答

2

單元格由ListView上的cellFactory設置。因爲只有在列表中有元素時纔會觸發,所以當沒有任何內容時,您可以簡單地向列表中添加一個空值。

ObservableList<String> list = FXCollections.observableArrayList(); 
list.add(""); 
ListView<String> listview = new ListView<>(); 
listview.setItems(list); 

然後當添加了某些東西時,刪除空值。一點點黑客,但應該給你想要的視覺效果。

+0

謝謝,但我知道「黑客」。只是認爲有些東西是簡單的;) – notmyf4ulty

+0

這種方法的問題在於,無論何時處理數據,都必須考慮到這種特殊情況:即,您使用此解決方案爲視圖污染了數據模型中的邏輯。 OTOH,我真的沒有看到任何真正的鉤子來做到這一點 - 在虛擬流中佈置單元格的外觀實現僅在項的數量大於0時才被調用,因此您必須實現一個自定義皮膚(這將變成一個項目的一部分)。 –

+0

@James_D - 我完全同意,但找不到處理它的較不干擾的方式。我認爲對於這個用例來說,處理邊界情況並不難。 –

相關問題