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.");
}
}
};
}
添加回答
举报