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