在ObservableList Extractors中处理NULL

时间:2016-10-28 16:51:00

标签: java javafx observable extractor

我有一个带有提取器的ObservableList,这样当列表中项目的属性发生变化时,附加到对象的侦听器就会触发:

ObservableList<User> users = FXCollections.observableArrayList(param -> new Observable[] {param.getDepartment().departmentNameProperty()});

但是,如果用户没有部门(即param.getDepartment()null),则会抛出NPE。这是有道理的,因为您无法从departmentNameProperty获得SimpleStringPropertynull}。

ObservableList更改为:

ObservableList<User> users = FXCollections.observableArrrayList(param -> {
    if (param.departmentProperty() == null) {
        return new Observable[0];
    } else {
        return new Observable[]{param.getDepartment().departmentNameProperty();
    }

修复了NPE,但是对于列表中所有位置的更改,可观察到的似乎没有正确触发。

有没有好办法解决这个问题?我目前正在通过不允许空部门来解决它(构造函数现在只创建一个名为&#34的部门;&#34;),但这似乎是一个草率的解决方案。

0 个答案:

没有答案