Как бы я пошел о стилизации ячеек в ListView на основе условия в JavaFX? - PullRequest
0 голосов
/ 03 мая 2019

Я нашел этот пост, и мне кажется, что он очень похож, но мне нужна помощь в адаптации его к моему случаю: Как установить стиль ячеек представления списка на основе условия в 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),но любая помощь приветствуется.

...