ListView(下)
关于CheckBoxListCell的选中监听属性
实体类
public class Data { private String name; private SimpleBooleanProperty selected = new SimpleBooleanProperty(); public Data() { } public Data(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public boolean isSelected() { return selected.get(); } public SimpleBooleanProperty selectedProperty() { return selected; } public void setSelected(boolean selected) { this.selected.set(selected); } }
省略创建实体类和可观察列表
通过CheckBoxListCell创建回调函数Callback
Callback<ListView<Data>, ListCell<Data>> cell = CheckBoxListCell.forListView(param -> { // 不是B就是true if (!param.getName().equals("B")) { param.setSelected(true); } return param.selectedProperty(); }, new StringConverter<Data>() { @Override public String toString(Data object) { return object.getName(); } @Override public Data fromString(String string) { return new Data(string); } }); listView.setCellFactory(cell);
对listView添加属性监听器监听值的改变,验证效果
listView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> { System.out.println("名称 = " + newValue.getName() + " 是否选中 = " + newValue.isSelected()); });
控制台打印(点击A,取消勾选A,点击B,再点击A)
名称 = A 是否选中 = true 名称 = B 是否选中 = false 名称 = A 是否选中 = false