GWT ButtonCell Изменение текста

#gwt

#gwt

Вопрос:

Как я могу изменить текст в ячейке кнопок, который встроен в столбец celltable при нажатии кнопки. Я только что видел setFieldUpdater. Также есть ли какой-нибудь простой способ обновить другой столбец CellTable, а не обращаться к нему напрямую

Ответ №1:

Виджеты ячеек основаны на модели (MVP), вы должны обновить объект, отображаемый в строке (переданный в FieldUpdater), а затем сообщить таблице ячеек, что значение изменилось, и его следует перерисовать (используйте setRowData, используя индекс, переданный в FieldUpdater). Что-то вроде:

 new FieldUpdater<MyObject, String>() {
  @Override
  public void update(int index, MyObject object, String value) {
    object.setSomeField("foo");
    cellTable.setRowData(index, Collections.singletonList(object));
  }
}
  

Комментарии:

1. Спасибо. изначально я создал CellTable.redraw(); но это обновляет всю таблицу. В чем суть Collections.singletonList(объекта)? Чтобы передать более одного объекта в ячейку?

2. setRowData ожидает a List , но у вас есть только один объект; java.util.Collections.singletonList создает a List вокруг вашего единственного объекта; это проще, чем создавать новый, скажем, ArrayList добавить к нему свой объект. Кстати, setRowData обновляет элементы (строки), начинающиеся с index ; передача одноэлементного списка обновляет только index строку; передача списка с двумя элементами обновит как index , так и index 1 строки.

3. Привет, Томас, при регистрации метода визуализации в пользовательской ячейке кажется, что таблица отображается дважды при обновлении одного объекта с помощью FieldUpdater. Есть мысли? pastebin.com/xxeqXSXw