0

我有我的数据Map<Key,ArrayList<Value>>所以我希望我的 col1 代表我的键和其他列来代表我的值中的数据。这个值可以是或多行。所以我正在考虑将一个单元格表放在一个单元格表中,但它会影响我的标题(因为外部单元格表的列数仅为 2)以及排序。

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

那么最好的方法是什么?

4

1 回答 1

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 */
}

然后将地图转换为 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);
于 2012-11-18T17:21:09.463 回答