リスト内のアイテムのプロパティが変更されたときに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部門を許可しないことで回避しています(コンストラクターは「」という名前の部門を作成するだけです)が、それはずさんな解決策のようです。