我的数据为Map<Key,ArrayList<Value>>
所以我希望我的col1代表我的键,其他列代表我的值中的数据。并且此值可以是多行。所以我想把一个celltable放在一个celltable中但是它会影响我的标题(因为外部celltable的列数只有2),还有排序。
如果我将地图直接传递给ListDataProvider
,它会假设行数是地图的行数,但事实并非如此。
那么最好的方法是什么?
答案 0 :(得分:0)
我建议使用类似RowObject的类:
class RowObject {
private final Key key;
private final Value value;
RowObject(Key key, Value value) {
this.key = key;
this.value = value;
}
/* Getters omitted */
}
然后将地图转换为RowObject列表并将列表提供给数据提供者:
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);