我有一个Cell Table用于输出某些搜索结果。单元格表使用列表数据提供程序来更新信息。我想分开不同的部分,所以我试图在跨越所有列的单元格的不同部分之间添加自定义行。我正在扩展AbstractCellTableBuilder来做到这一点,但是当我使用TableRowBuilder和startRow(),并将startRow()返回一个空指针异常给AbstractCellTableBuilder.java:243,它引用了tbody时,我的问题就出现了。所以这让我相信我的单元格表没有正确传递到AbstractCellTableBuilder。我对gwt和java的理解是非常基本的,所以我可能只是不明白这应该如何工作,而展示示例对于我来说是相当复杂的。如果任何人都可以知道我在搞什么,或者有更简单的例子可以帮助我,我将不胜感激!尝试向gwt中的CellTable添加自定义行时发生空错误
我发现了一个类似的答案,并试图实现它,这就是我如何提出我有什么,但它的答案不够详细,足以让我完全理解它是如何工作的。以下是我引用: Building a custom row on demand with GWT CellTableBuilder
编辑:
//Passing the CustomCellTableBuilder to the cell table
CustomCellTableBuilder buildRow = new CustomCellTableBuilder();
cellTable_2.setTableBuilder(buildRow);
:
的我是多么正常的行添加到单元格表
searchProvider = new ListDataProvider<SearchColumn>();
cellTable_2 = new CellTable<SearchColumn>();
//Add columns to the cellTable
searchProvider.addDataDisplay(cellTable_2);
//What I call when adding a row to the cellTable using the ListDataProvider
searchProvider.getList().add(new SearchColumn("",label,"","","","","","",""));
添加CustomCellTableBuilder到细胞表基本格式
用于添加自定义行的CustomCellTableBuilder:
public class CustomCellTableBuilder extends AbstractCellTableBuilder<SearchColumn>{
public CustomCellTableBuilder() {
super(cellTable_2);
}
@Override
protected void buildRowImpl(SearchColumn rowValue, int absRowIndex){
//building main rows logic
if (labelrow == 1){
System.out.println("Going to build extra row if");
buildExtraRow(absRowIndex, rowValue);
}
else {
System.out.println("Getting into normal buildRow");
buildRow(rowValue,absRowIndex);
}
}
private void buildExtraRow(int absRowIndex, SearchColumn rowValue){
start(true);
TableRowBuilder row = startRow();
TableCellBuilder td = row.startTD().colSpan(getColumns().size());
td.text("Testing this out").endTD();
row.endTR();
}}
的问题是您如何使用您的'CustomCellTableBuilder'。你为什么不把它交给'CellTable'? –
对不起,我不确定我明白你的意思。从我已经能够告诉我应该将CellTable传递给AbstractCellTableBuilder,这是超级(cellTable_2)应该做的据我了解。当我创建CustomCellTableBuilder的一个新实例时,我没有传递cellTable_2,因为这是一个子类的所有部分,cellTable_2是继承的,所以我不知道它是否有必要。对不起,如果我的术语混淆或错误,我只是把这个程序当做爱好,所以我不擅长这个东西。 – ryooan
您一般使用'CellTableBuilder'的方式是将它传递给'CellTable'的['setTableBuilder'](http://www.gwtproject.org/javadoc/latest/com/google/gwt/user/cellview /client/AbstractCellTable.html#setTableBuilder%28com.google.gwt.user.cellview.client.CellTableBuilder%29)和“CellTable”使用它(以正确的顺序调用方法)来构建/呈现表。这不是你在做什么,所以至少要显示更多的代码。 –