我有一个tableview,我想要做的是基于具有环境类型的单选按钮; QA,DEV,PROD等。它在表视图中添加了一个可观察的列表,如果单击另一个单选按钮,它将清除前一个环境的列表,并在tableview中显示相关的可观察列表。
我的问题是,因为obs列表通过引用传递到tableview, tableview.getItems()。clear()清除tableview和列表。我试图这样做 - 它只清除tableview中显示的内容而不是原始列表。
ObservableList<BarFile> devCheckboxList = FXCollections.observableArrayList();
//List gets populated with files elsewhere
switch (chk.getText()) {
//Check to see which checkbox is selected
case "DEV":
tableView.getItems().clear();
System.err.println("DEV IS TRUE");
environmentCheck("DEV");
//Add to listview
tableView.setItems(devCheckboxList);
break;
}
答案 0 :(得分:1)
如果您不想清除现有列表,请不要拨打clear()
:
ObservableList<BarFile> devCheckboxList = FXCollections.observableArrayList();
//List gets populated with files elsewhere
switch (chk.getText()) {
//Check to see which checkbox is selected
case "DEV":
// tableView.getItems().clear();
System.err.println("DEV IS TRUE");
environmentCheck("DEV");
//Add to listview
tableView.setItems(devCheckboxList);
break;
}
由于您无论如何都要替换表的整个列表,因此对clear()
的调用对表中显示的内容没有影响。