在GWT2.5中,如何基于AbstractCell填充单元格的多个部分

在GWT2.5中,如何基于AbstractCell填充单元格的多个部分,gwt,Gwt,我有一个基于AbstractCell的ContactCell类。 它有两个标签和一个图像(在GWT2.5的UiBinder中定义) 如何使用Column.addColumn()将此自定义单元格添加到CellTable 如果是这样,当getValue()只返回简单值(如字符串)时,如何使用getValue()方法填充ContactCell的字段 列=新列( 新建ContactCell()){ @凌驾 公共字符串getValue(联系人对象){ 返回对象…只能返回一个值。如何填充2个标签和图像? }

我有一个基于AbstractCell的ContactCell类。 它有两个标签和一个图像(在GWT2.5的UiBinder中定义)

如何使用Column.addColumn()将此自定义单元格添加到CellTable

如果是这样,当getValue()只返回简单值(如字符串)时,如何使用getValue()方法填充ContactCell的字段

列=新列(
新建ContactCell()){
@凌驾
公共字符串getValue(联系人对象){
返回对象…只能返回一个值。如何填充2个标签和图像?
}
};

您可以通过覆盖单元格的onrender方法来更改渲染字符串,如下所示

假设可以从getValue mathod返回的值计算2个标签和一个图像

ContactCell contactCell = new ContactCell()
{
    @Override
    public void render( com.google.gwt.cell.client.Cell.Context context, SafeHtml value, SafeHtmlBuilder sb )
    {

    // do value check and compute label1 and label2 and calso compute the image path.       

    sb.appendHtmlConstant( "<label>LABEL1</label>" +"<label>LABEL2</label>"+"<image></image>" )
    }
});


Column<Contact, String> column = new Column<Contact, String>( contactCell ) 
{
  @Override
  public String getValue(Contact object) 
  {
    return object... CAN ONLY RETURN ONE VALUE. HOW TO POPULATE 2 LABELS & IMAGE?
  }
};
ContactCell ContactCell=new ContactCell()
{
@凌驾
公共void呈现(com.google.gwt.cell.client.cell.Context上下文、安全HTML值、安全HTMLBuilder sb)
{
//执行值检查并计算label1和label2,然后计算图像路径。
sb.附加HtmlConstant(“LABEL1”+“LABEL2”+”)
}
});
列=新列(contactCell)
{
@凌驾
公共字符串getValue(联系人对象)
{
返回对象…只能返回一个值。如何填充2个标签和图像?
}
};

您可以使用
标识列
而不是普通的
(将通过整个联系人对象),或者使用普通的
,如下所示:

Column<Contact, String[]> column = new Column<Contact, String[]>(
    new ContactCell()) {
  @Override
  public String[] getValue(Contact object) {
    String[] retvalue = new String[2];
    retvalue[0] = "SOMETHING";
    retvalue[1] = "SOME OTHER THING";
    return retvalue;
  }
};
列=新列(
新建ContactCell()){
@凌驾
公共字符串[]getValue(联系人对象){
字符串[]retvalue=新字符串[2];
retvalue[0]=“某物”;
retvalue[1]=“其他东西”;
返回值;
}
};

如果基于
AbstractCell
的单元格是使用
UiBinder
定义的,则当前无法将此类单元格添加到
单元格表中

Column<Contact, String[]> column = new Column<Contact, String[]>(
    new ContactCell()) {
  @Override
  public String[] getValue(Contact object) {
    String[] retvalue = new String[2];
    retvalue[0] = "SOMETHING";
    retvalue[1] = "SOME OTHER THING";
    return retvalue;
  }
};