我的listview有问题。 我有一些代码可以改变ListView中某些单元格的背景。但是当我在列表视图中滚动时,背景会变为错误的单元格。
在这里你看到一些代码: 在列表视图中更改单元格的背景:
@Override
public ListCell<String> call(ListView<String> param) {
ListCell<String> cell = new ListCell<String>() {
@Override
protected void updateItem(String t, boolean bln) {
super.updateItem(t, bln);
if (t != null) {
setText(t);
if (!controller.checkGerecht(t)) {
if (!getStyleClass().contains("mystyleclass")) {
getStyleClass().add("mystyleclass");
foutieveInput.add(t);
} else {
getStyleClass().remove("mystyleclass");
}
} else {
setText(t);
}
}
}
css文件:
.mystyleclass{
-fx-background-color: #ff0000;
}
答案 0 :(得分:1)
如果您希望仅controller.checkGerecht(t)
为false
remove
的单元格上的红色背景,则您的逻辑实现不正确。您尝试删除样式类(如果它不存在):如果条件不成立,则要删除样式类。 (即你在错误的else
条款中有null
。)
此外,您需要处理更新单元格以保持public ListCell<String> call(ListView<String> param) {
ListCell<String> cell = new ListCell<String>() {
@Override
protected void updateItem(String t, boolean bln) {
super.updateItem(t, bln);
if (t == null) {
setText(null);
getStyleClass().remove("mystyleclass");
} else {
setText(t);
if (!controller.checkGerecht(t)) {
if (!getStyleClass().contains("mystyleclass")) {
getStyleClass().add("mystyleclass");
foutieveInput.add(t);
}
} else {
getStyleClass().remove("mystyleclass");
}
}
}
};
return cell ;
}
值的情况(例如,如果它为空):
JOIN