1 回答

TA貢獻1883條經驗 獲得超3個贊
updateItem可以調用任意次數,可以傳遞不同的項目,單元格可以從空變為非空,反之亦然。ListView創建與您在屏幕上看到的一樣多的單元格,并用項目填充它們。例如,滾動或修改列表items或調整大小ListView可以導致更新。
出于這個原因,任何單元格都需要能夠處理傳遞null給該方法的任意項目序列(或+空)updateItem。
此外,您應該避免調用setItem自己,因為super.updateItem已經這樣做了。setGraphic如果要在單元格中顯示項目,請改用:
@Override
public ListCell<TextFlow> call(ListView<TextFlow> param) {
return new ListCell<TextFlow>() {
@Override
protected void updateItem(TextFlow item, boolean empty) {
super.updateItem(item, empty);
if (item != null) {
setStyle("-fx-control-inner-background: blue;");
setGraphic(item);
} else {
setStyle(null);
setGraphic(null);
System.out.println("Item is null.");
}
}
};
}
添加回答
舉報