#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
ожидает aList
, но у вас есть только один объект;java.util.Collections.singletonList
создает aList
вокруг вашего единственного объекта; это проще, чем создавать новый, скажем,ArrayList
добавить к нему свой объект. Кстати,setRowData
обновляет элементы (строки), начинающиеся сindex
; передача одноэлементного списка обновляет толькоindex
строку; передача списка с двумя элементами обновит какindex
, так иindex 1
строки.3. Привет, Томас, при регистрации метода визуализации в пользовательской ячейке кажется, что таблица отображается дважды при обновлении одного объекта с помощью FieldUpdater. Есть мысли? pastebin.com/xxeqXSXw