2012-11-16 5 views
0

저는 Map<Key,ArrayList<Value>>으로 데이터를 가지고 있습니다. 그래서 내 col1이 내 키를 표현하고 다른 컬럼이 내 값으로 데이터를 나타 내기를 원합니다. 이 값은 여러 행이 될 수 있습니다. 그래서 나는 celltable을 celltable에 넣을 것을 생각하고 있었지만 (외부 셀 테이블의 열의 수가 2가 될 것이므로) 헤더에 영향을 미칠 것이고 정렬도 가능합니다.지도에 데이터가있는 GWT 셀 테이블

지도를 직접 ListDataProvider으로 전달하면 행 수는지도의 행 수라고 가정하지만 사실이 아닙니다.

그래서 가장 좋은 방법은 무엇입니까?

답변

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