我正在尝试在ListView节点上选择新项目时编写侦听器。但问题是我在运行应用程序时得到了NPE。通过查看它我假设这可能被抛出,因为列表在运行时是空的,但我不知道如何解决它。
更新1: 从进一步的调查,我正在写一个btn动作听众。当我尝试访问所选项时,我被抛出一个空指针异常。解决方法是使用try / catch包装它,最终修复它。将使用viewList尝试类似的东西,看看它是否可行
更新2: try / catch(NPE)变通方法适用于viewList操作侦听器
第186行的代码: ListView.getSelectionModel()。selectedItemProperty()。addListener(new ...
listView = new ListView<BusinessCard>();
observableList = FXCollections.observableList(cardModel.getCards());
//cardModel.getCards() -> ArrayList<BusinessCards>
// ListView Listener, changes text fields for the selected B.C in ViewLsit
listView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<BusinessCard>() {
@Override
public void changed(ObservableValue<? extends BusinessCard> arg0, BusinessCard oldval,BusinessCard newVal) {
if(newVal != null) setDataFields(newVal.getUI());
}
});
答案 0 :(得分:3)
当调用listView.getSelectionModel()。selectedItemProperty()...并且视图列表为空时,抛出null。据说这是文档中的行为
解决方法:
// ListView Listener, changes text fields for the selected B.C in ViewList
listView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<BusinessCard>() {
@Override
public void changed(ObservableValue<? extends BusinessCard> arg0, BusinessCard oldval,BusinessCard newVal) {
if(newVal == null) return;
setDataFields(newVal.getUI());
}
});