0

リスト内のアイテムのプロパティが変更されたときにObservableList、オブジェクトにアタッチされたリスナーが起動するように、エクストラクタを使用しています。

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

ただし、ユーザーに部門がない (つまり、 でparam.getDepartment()あるnull) 場合は、NPE がスローされます。departmentNamePropertyから(a SimpleStringProperty) を取得できないため、これは理にかなっていますnull

を次のように変更ObservableListします。

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

NPE を修正しますが、リスト内のすべての位置への変更に対してオブザーバブルが正しく起動しないようです。

これに対処する良い方法はありますか?私は現在、null部門を許可しないことで回避しています(コンストラクターは「」という名前の部門を作成するだけです)が、それはずさんな解決策のようです。

4

0 に答える 0