Я нашел этот пост, и мне кажется, что он очень похож, но мне нужна помощь в адаптации его к моему случаю: Как установить стиль ячеек представления списка на основе условия в JavaFX
По сути, у меня есть ListView, и я хочу изменить цвет фона отдельных ячеек в зависимости от условия.У меня есть arrayList locations
из location
объектов, и я хочу проверить свойство одного местоположения, чтобы определить цвет фона ячейки.ListView заполняется путем итерации по locations
и получения имени каждого местоположения, затем сохранения его в arraylist, а затем, наконец, заполнения listView.Вот соответствующий код:
@FXML
private ListView<String> locationListView;
private ArrayList<String> locationList = new ArrayList();
private ListProperty<String> listProperty = new SimpleListProperty<>();
@Override
public void initialize(URL url, ResourceBundle rb) {
for (int i = 0; i < locations.size(); i++) {
locationList.add(locations.get(i).name());
}
}
locationListView.itemsProperty().bind(listProperty);
listProperty.set(FXCollections.observableArrayList(locationList));
}
А вот где я борюсь, я скопировал / изменил из поста, который я связал выше.
locationListView.setCellFactory(lv -> new ListCell<String>() {
@Override
protected void updateItem(String c, boolean empty) {
super.updateItem(c, empty);
for (int i = 0; i < locations.size(); i++) {
if (locations.get(i).visited) {
setStyle("-fx-background-color: green");
}
}
}
});
Я знаю, что это долгий путьработать по назначению, но я не уверен, куда идти отсюда, я думаю, что подхожу к нему неправильно.
В целом я, возможно, сделал это более сложным, чем это должно быть (плохо знаком с javafx),но любая помощь приветствуется.