我有一个ArrayList:
List<Column> listOfColumns = new ArrayList();
如何将此列表绑定到listView?它应该始终显示此列表中的列。
另外,我使用
final ObservableList<Columns> data = FXCollections.observableArrayList();
现在使ListView只包含Columns,但Column是一个包含名称(字符串)和数组列表的对象,所以我的ListView现在显示列的名称和数组列表的内容在专栏中。有没有办法让ListView只显示列的名称?
我这样做的原因是因为我可以使用listView.getSelectionModel()。getSelectedItem(),并返回一列。
答案 0 :(得分:2)
鉴于Column
是包含一个String
字段和一个ArrayList
的POJO,默认情况下ListView
中显示的内容由toString()
给出方法
您只需自定义此方法即可显示所需内容:
private class Column {
private String name;
private ArrayList<String> list;
public Column(String name, ArrayList list) {
this.name = name;
this.list = list;
}
// getters and setters
@Override
public String toString() {
//return name + list;
return name;
}
}
无论如何,如果选择了行,则侦听器将返回Column
对象。您在那里打印的内容取决于您是否正在使用toString()
或仅访问字符串字段:
list.getSelectionModel().selectedItemProperty().addListener(
(observable,oldValue,newValue)->{
System.out.println("Selected item: " + newValue);
System.out.println("Selected item: " + newValue.getName());
});