如何在我的ViewList Selected Item Action Listener中修复此NullPointer?

时间:2016-06-29 14:59:54

标签: java javafx

我正在尝试在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());       
                }
            });

1 个答案:

答案 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());      
                }
            });