GWT CellBrowser с CompositeCell

Я пытаюсь построить CellBrowser, как указано ниже.

Week 1 -> Mathematics
Week 2    [] Algebra
Week 3    [] Trigonometry
          Science
          [] Physics
          [] Chemistry         

Проблема в том, что я не могу получить заголовки (математика и естественные науки), как указано в приведенном выше коде. Заголовок из другого объекта, и мой CompositeCell (CheckBox и TextCell), кажется, ожидает / применяет для всех элементов.

По сути, я пытаюсь построить список в CellBrowser, некоторые из которых имеют (CheckBox и TextCell), в то время как некоторые из них имеют только (TextCell).

Пожалуйста, порекомендуйте.

1 ответ

Решение

Вы должны переопределить метод рендеринга любого из ваших CompositeCell или CheckBoxCell, Что-то вроде этого:

public class MyCompositeCell extends CompositeCell<Course>
{
    @Override
    protected <X> void render(Context ctx,Course value, 
                            SafeHtmlBuilder sb, HasCell<Course, X> hasCell) {
    if (hasCell.getCell() instanceof CheckBoxCell && !value.hasCheckBox())
        return;
    super.render(ctx,value, sb, hasCell);
}

Функция hasCheckBox() это просто пример. Либо вы получаете доступ к флажку в вашем DTO (Course) или вы можете передать флаг непосредственно в ячейку.

В качестве альтернативы вы можете изменить метод рендеринга вашего CheckBoxCell:

public class MyCheckBoxCell extends CheckBoxCell<Course> {

    @Override
    public void render(Context ctx,Transformation value, SafeHtmlBuilder sb) {
        if (!value.hasCheckBox())
            return;
        super.render(ctx,value, sb);
    }
Другие вопросы по тегам