Как я могу оформить элементы CellList для каждого элемента?

У меня есть CellList в GWT 2.5. Каждый элемент ячейки является классом, основанным на AbstractCell и определенным в файле UiBinder.

Как я могу установить разные стили для каждого элемента? Мне бы хотелось, чтобы некоторые появлялись в "отключенном" стиле, а другие - в "активном".

Это содержимое моего файла.ui.xml. Я не включил определения стилей или леса UiBinder.

<div class="{style.contact}">
    <div>
        <div>
            <img class="{style.photo}" src="{photo}"/>
        </div>
        <div class="{style.names}">
            <div>
                <p><ui:text from="{name}"/></p>
                <p><ui:text from="{jobTitle}"/></p>
                <p><ui:text from="{company}"/></p>
            </div>
        </div>
    </div>
</div>

3 ответа

Решение

Использование CellList.getRowElement():

cellList.getRowElement(3).addClassName("css-disabled");
cellList.getRowElement(4).addClassName("css-active");

Вы можете добиться добавления имен стилей, переопределив метод render() вашей ячейки следующим образом:

@Override
public void render( com.google.gwt.cell.client.Cell.Context context, T value, SafeHtmlBuilder sb )
{   
    if( disable condition met )
    {
            // Apply disabled style
        sb.appendHtmlConstant( "<div class='css-style-disabled' >"+ value+" </div>" 
    } 
    else
    {
            super.render( context, value, sb );
    } 
}

Итак, добавьте css-style-disabled класс к вашему CSS-файлу начните его стилизацию.

Решение texasbruce - решение, но если вы используете ListDataProvider, вам нужно будет изменить время любого вызова addClassName() таким образом:

new Timer() {
    @Override
    public void run() {
        << call cellList.getRowElement(0).addClassName("css-disabled") here >>;
    }
}.schedule(1);
Другие вопросы по тегам