如何根据JavaFX中的条件在ListView中对单元格进行样式设置?

时间:2019-05-03 00:40:44

标签: java javafx scenebuilder

我找到了这篇文章,我认为它非常相似,但是我需要一些帮助使其适应我的情况:How to set the style of list view cells based on a condition in JavaFX

基本上,我有一个ListView,我想根据条件更改单个单元格的背景颜色。我有一个locations对象的arrayList location,并且我想检查单个位置的属性以确定单元格的背景颜色。通过遍历locations并获取每个位置的名称,然后将其存储在arraylist中,最后填充listView,来填充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来说是新的),但是可以提供任何帮助。

0 个答案:

没有答案