Используйте тип элемента для ListView
, который содержит ObjectProperty<Color>
в дополнение к строке
private static class ListItem {
public ListItem(String text) {
this.text = text;
}
private final String text;
private final ObjectProperty<Color> color = new SimpleObjectProperty(Color.BLACK);
}
ListView<ListItem> listView;
listView.setCellFactory(cell -> {
ListCell<ListItem> cel = new ListCell<ListItem>() {
@Override
protected void updateItem(ListItem item, boolean empty) {
super.updateItem(item, empty);
if (item != null) {
textFillProperty().bind(item.color);
setFont(Font.font(16));
setText(item.text);
} else {
setText("");
textFillProperty().unbind();
setTextFill(Color.BLACK);
}
}
};
return cel;
});
Таким образом, вам просто нужно установить для свойства другоезначение, если вы хотите изменить цвет, например:
ListItem selectedItem = listView.getSelectionModel().getSelectedItem();
if (item != null) {
item.color.set(Color.RED);
}