Проблема: Я использую ListView в Java Fx, когда ячейка удовлетворяет определенному условию, она окрашивается.
Ячейки соответствуют условию
Как только я прокручиваю список вверх и вниз, цвет фона переходит ко всем другим ячейкам, даже если они не удовлетворяют условию.
Все клетки окрашены
Я знаю, что это связано с поведением ListView, так как он перерабатывает ячейки и некоторые атрибуты, похоже, что фоновые ячейки - один из них.
Условие одностороннее, если оно окрашено, оно не будет неокрашенным.
Проверяет состояние каждый раз X или при нажатии кнопки.
Фрагмент кода:
Где я устанавливаю CellFactory
groupCheckListView.setCellFactory(new Callback<ListView, ListCell>() {
@Override
public ListCell call(ListView param) {
return new ChangeColor();
}
});
// Change cell color
class ChangeColor extends ListCell<String> {
@Override
protected void updateItem(String item, boolean empty) {
if (empty || item == null) {
setText(null);
setGraphic(null);
} else if (item.toLowerCase().endsWith("done")) {
setText(item);
// Fill the "done" cell with color -> "#58FF2D" = light green
setBackground(new Background(new BackgroundFill(Paint.valueOf("#58FF2D"), CornerRadii.EMPTY, Insets.EMPTY)));
} else {
setText(item);
}
super.updateItem(item, empty);
}
Файл CSS
.list-cell:empty {
-fx-background-color: white;
}
Если есть какие-либо другие предложения, некоторые вещи отсутствуют или лучше объяснить, просто скажите.
Спасибо =]