我有一个列表视图,由一个可观察的数组列表填充。我的步骤如下
更具体地说,attachListener以这种方式发生
private void attachListViewListener() {
testServersListView.getSelectionModel().selectedItemProperty().addListener((ObservableValue <? extends TestserverInformation> ov, TestserverInformation oldValue, TestserverInformation newValue )->{
this.selectedInfo = testServersListView.getSelectionModel().getSelectedItem();
updateTabs();
});
}
我希望能够通过按下按钮来重新列表。方法如下
@FXML
public void btnRefreshServerListClicked(){
log.info("Refreshing list");
testServersListView.getItems().clear();
fillObservableTestserverInfoList();
testServersListView.setItems(observableTestserverInfoList);
selectAndUpdate(); //selects the first element on the list
}
问题是,当我清除列表项时,selectedInfo变量设置为null并且监听器被触发,导致nullpointerexception(因为selectAndUpdate使用selectedInfo来更新它的控件。我可以删除监听器而不必将其设置为不同的变量,例如?
private myListener = new ChangeListener<...>(){
};