0
我有一個ListView
綁定ObservableList
。最初,當空,ListView
具有統一的顏色,如圖片所示:如何使ListView看起來與包含元素時相同?
添加元素到列表中後,它會充滿了細胞,有自己的顏色:
很顯然,我不希望它這樣的表現,所以這裏的問題:如何讓我的列表看起來像在第二張圖片,即使它是空的?
我有一個ListView
綁定ObservableList
。最初,當空,ListView
具有統一的顏色,如圖片所示:如何使ListView看起來與包含元素時相同?
添加元素到列表中後,它會充滿了細胞,有自己的顏色:
很顯然,我不希望它這樣的表現,所以這裏的問題:如何讓我的列表看起來像在第二張圖片,即使它是空的?
單元格由ListView上的cellFactory設置。因爲只有在列表中有元素時纔會觸發,所以當沒有任何內容時,您可以簡單地向列表中添加一個空值。
ObservableList<String> list = FXCollections.observableArrayList();
list.add("");
ListView<String> listview = new ListView<>();
listview.setItems(list);
然後當添加了某些東西時,刪除空值。一點點黑客,但應該給你想要的視覺效果。
謝謝,但我知道「黑客」。只是認爲有些東西是簡單的;) – notmyf4ulty
這種方法的問題在於,無論何時處理數據,都必須考慮到這種特殊情況:即,您使用此解決方案爲視圖污染了數據模型中的邏輯。 OTOH,我真的沒有看到任何真正的鉤子來做到這一點 - 在虛擬流中佈置單元格的外觀實現僅在項的數量大於0時才被調用,因此您必須實現一個自定義皮膚(這將變成一個項目的一部分)。 –
@James_D - 我完全同意,但找不到處理它的較不干擾的方式。我認爲對於這個用例來說,處理邊界情況並不難。 –