我有我的数据Map<Key,ArrayList<Value>>
所以我希望我的 col1 代表我的键和其他列来代表我的值中的数据。这个值可以是或多行。所以我正在考虑将一个单元格表放在一个单元格表中,但它会影响我的标题(因为外部单元格表的列数仅为 2)以及排序。
而且,如果我将地图直接传递给ListDataProvider
它,则假定行数是地图的行数,但事实并非如此。
那么最好的方法是什么?
我有我的数据Map<Key,ArrayList<Value>>
所以我希望我的 col1 代表我的键和其他列来代表我的值中的数据。这个值可以是或多行。所以我正在考虑将一个单元格表放在一个单元格表中,但它会影响我的标题(因为外部单元格表的列数仅为 2)以及排序。
而且,如果我将地图直接传递给ListDataProvider
它,则假定行数是地图的行数,但事实并非如此。
那么最好的方法是什么?
我建议使用这样的类 RowObject :
class RowObject {
private final Key key;
private final Value value;
RowObject(Key key, Value value) {
this.key = key;
this.value = value;
}
/* Getters omitted */
}
然后将地图转换为 RowObjects 列表并将列表提供给数据提供者:
List<RowObject> rowObjects = new ArrayList<RowObject>();
for (Entry<Key, ArrayList<Value>> entry : map.entrySet()) {
for (Value value : entry.getValue()) {
rowObjects.add(new RowObject(entry.getKey(), value));
}
}
ListDataProvider<RowObject> dataProvider = new ListDataProvider<RowObject>();
dataProvider.addDataDisplay(cellTable);
dataProvider.setList(rowObjects);
添加这样的列:
Column column = new Column<RowObject, String>(new TextCell()) {
@Override
public String getValue(RowObject object) {
return getStringValueFor(object);
}
};
cellTable.addColumn(column);