说我有一个名为CompanyModel的应用程序模型类,它包含一个Company实例的observableList。公司是一个持有另一个产品bean的observableList的bean。
我能够通过以下方式观察列表更改事件(添加/删除):
companyModel.loadedCompanyList.addListener(new ListChangeListener(){ // do something});
,公司类看起来像:
class Company {
private ObservableList<Product> loadedProducts = FXCollections.observableArrayList();
private ObjectProperty<Product> currentProduct = new SimpleObjectProperty<Product>();
// setters and getters
}
并且CompanyModel类看起来像:
class CompanyModel {
private ObservableList<Company> loadedCompanyList = FXCollections.observableArrayList();
private ObjectProperty<Company> selectedCompany = new SimpleObjectProperty<Company>();
// setters and getters
}
问题是每当我在loadedProducts中添加新产品时,绑定的loadedCompanyList列表更改事件永远不会触发。如何绑定可观察列表的列表项更改事件?
我确实用Google搜索了一些答案,这是我尝试过的: 将CompanyModel类更改为:
Callback<Company, Observable[]> extractor = new Callback<Company, Observable[]>() {
@Override
public Observable[] call(Company company) {
return new Observable[] {company.getLoadedProductsProperty()};
}
};
private ObservableList<Company> loadedCompanyList = FXCollections.observableArrayList(extractor));
然而,它不起作用..