GWT Celltable,包含地图中的数据

时间:2012-11-16 21:09:36

标签: gwt

我的数据为Map<Key,ArrayList<Value>>所以我希望我的col1代表我的键,其他列代表我的值中的数据。并且此值可以是多行。所以我想把一个celltable放在一个celltable中但是它会影响我的标题(因为外部celltable的列数只有2),还有排序。

如果我将地图直接传递给ListDataProvider,它会假设行数是地图的行数,但事实并非如此。

那么最好的方法是什么?

1 个答案:

答案 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);