我使用rpc调用获取结果列表。我确定结果列表是正确的,因为当我使用对话框时,所有数据都在那里。但是当我把它放在CellTable中时,有些行丢失了。为什么会这样?
public void onSuccess(List<List<String>> result) {
CellTable<List<String>> bugsTable = new CellTable<List<String>>();
// Create columns
TextColumn<List<String>> idColumn = new TextColumn<List<String>>() {
@Override
public String getValue(List<String> recordSet) {
return recordSet.get(0).toString();
}
};
TextColumn<List<String>> idCommitColumn = new TextColumn<List<String>>() {
@Override
public String getValue(List<String> recordSet) {
return recordSet.get(1).toString();
}
};
TextColumn<List<String>> erMessageColumn = new TextColumn<List<String>>() {
@Override
public String getValue(List<String> recordSet) {
return recordSet.get(2).toString();
}
};
// Add the columns.
bugsTable.addColumn(idColumn, "ID");
bugsTable.addColumn(idCommitColumn, "ID commit");
bugsTable.addColumn(erMessageColumn, "Message");
// Set the total row count. This isn't strictly necessary, but it affects
// paging calculations, so its good habit to keep the row count up to date.
bugsTable.setRowCount(result.size(), true);
// Push the data into the widget.
bugsTable.setRowData(0, result);
tabP.add(bugsTable, "bugs");
RootPanel.get("loadingbarImg").setVisible(false);
}
});
答案 0 :(得分:2)
默认ProvidesKey
(SimpleKeyProvider
)将对象本身用作键,因此使用了equals()
和hashCode()
。 java.util.List
合约定义了equals()
和hashCode()
行为,并强制要求具有相同项目的两个列表为equals()
且具有相同的hashCode()
,因此,你的列表中有一些相同的行,这可能是个问题。
解决方案:不要对行使用List<String>
,而是定义特定的行类。