我正在编写一个简单的crud-redactor,并且我遇到了一个问题:
我有一个班级:
public class Note {
List<String> columnNames;
HashMap<String, SimpleStringProperty> items;
}
我需要通过TableView
以某种方式与setCellValueFactory
建立联系。
例如,我在HashMap中有3个值,其中包含键"id"
,"name"
和"age"
。所以我希望在TableView
中有3列与此HashMap
相关联,并在将Notes数组包装到ObservableList
并使用TableView
方法{{}后表示其值1}}。
答案 0 :(得分:0)
只需使用值工厂返回给定键的映射值,例如
val RDD = data.map(_.split(',')).map(arr => (arr(0), arr(2)))
如果您需要使用final String key = "id";
TableColumn<Note, String> column = new TableColumn<>("ID");
column.setCellValueFactory(cd -> cd.getValue().items.get(key));
中的密钥,您可以根据索引获取属性,例如
columnNames
请注意,根据使用的包,您可能需要将getter添加到final String index = 1;
TableColumn<Note, String> column = new TableColumn<>("1");
column.setCellValueFactory(cd -> cd.getValue().columnNames.size() <= index ?
null
: cd.getValue().items.get(cd.getValue().columnNames.get(index)));
类。
如果这是理想的行为,您还可以使用Note
代替Map.computeIfAbsent
动态创建不存在的属性&#34;
get