使用javafx中的附加侦听器刷新Listview javafx

时间:2015-08-24 12:27:25

标签: java listview javafx-8

我有一个列表视图,由一个可观察的数组列表填充。我的步骤如下

  1. 填充可观察数组列表
  2. 使用listView.setItems()方法填充列表视图
  3. 使用listView.setCellFactory(),
  4. 设置自定义单元格
  5. 附加列表视图的侦听器。
  6. 更具体地说,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<...>(){
    };
    

0 个答案:

没有答案