我找到了这篇文章,我认为它非常相似,但是我需要一些帮助使其适应我的情况: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来说是新的),但是可以提供任何帮助。