Получить все объекты из GWT CellTable

Простой вопрос: у меня есть CellTable, заполненный объектами Keyword. Теперь я хотел бы получить все ключевые слова в этой CellTable. Это возможно? Если нет, то почему? Наверняка должен быть способ...

Я не могу понять, как это так сложно (ну, может быть, это не так, но я просто не могу найти ответ на всю жизнь).

Некоторый код для уточнения:

//my celltable
private CellTable<Keyword> ctKeywordsLinked = new CellTable<Keyword>();

//listdataprovider to fill my celltable with
private ListDataProvider<Keyword> dataProviderLinkedKeywords = new ListDataProvider<Keyword>();

//add 4 keyword objects to the listdataprovider to fill the celltable
dataProviderLinkedKeywords.getList().add(new Keyword);
dataProviderLinkedKeywords.getList().add(new Keyword);
dataProviderLinkedKeywords.getList().add(new Keyword);
dataProviderLinkedKeywords.getList().add(new Keyword);

Итак, теперь, когда моя таблица ячеек заполнена, я хотел бы получить эти 4 ключевых слова, не касаясь listdataprovider. Надеюсь, все немного прояснилось :-)


person Jack    schedule 29.05.2015    source источник
comment
вы хотите получить запись обновления из таблицы ячеек?   -  person mohammed sameen    schedule 29.05.2015
comment
Не совсем уверен, что вы подразумеваете под записью обновления, но у меня есть Celltable, скажем, с 4 строками (которые в основном представляют собой 4 добавленных объекта ключевых слов). Теперь я хочу получить эти 4 объекта из Celltable. Я добавлю код к исходному вопросу, чтобы прояснить ситуацию.   -  person Jack    schedule 29.05.2015
comment
Зачем вам нужно получать строки через CellTable? Вы всегда можете получить провайдера от него.   -  person cybersoft    schedule 29.05.2015
comment
@cybersoft можно ли получить listdataprovider из таблицы ячеек? Потому что я не могу найти никаких методов, которые бы это сделали. Я ожидал чего-то подобного; ctKeywordsLinked.getListDataProvider() или что-то в этом роде, но это явно не работает. Или вы имеете в виду сам объект dataProviderLinkedKeywords? Вот как я это делаю в данный момент, но мне это не очень нравится.   -  person Jack    schedule 29.05.2015
comment
Конечно, это CellTable#getKeyProvider (ListDataProvider реализует интерфейс ProvidesKey), но вы должны привести его к ListDataProvider. Я бы просто поместил этого поставщика в поле класса и использовал его позже.   -  person cybersoft    schedule 29.05.2015
comment
Использование ListDataProvider - это предполагаемый способ получить/установить данные CellTable. Это его цель, т.е. он не был назван «поставщиком данных» просто так.   -  person francesco foresti    schedule 29.05.2015
comment
Хорошо, ребята, большое спасибо за ответы! @киберсофт; если бы вы могли превратить этот комментарий в ответ, я бы с радостью принял его как таковой :)   -  person Jack    schedule 29.05.2015
comment
В отличие от форумов, мы не используем слова «Спасибо» или «Любая помощь приветствуется» или подписи на Stack Overflow. См. раздел Должен ли быть "Привет", "спасибо" слоганов и приветствий удалить из постов?. Кстати, это заранее спасибо, а не спасибо заранее.   -  person John Saunders    schedule 07.06.2015
comment
Нет, вы не используете спасибо, я использую ;-)   -  person Jack    schedule 08.06.2015


Ответы (1)


CellTable имеет метод getKeyProvider, который возвращает объект, содержащий данные в интерфейсе ProvidesKey.

Вы создаете ListDataProvider и передаете его в таблицу ячеек, чтобы вы могли снова получить этот провайдер из таблицы ячеек в любое время:

ListDataProvider provider = (ListDataProvider)cellTable.getKeyProvider();
provider.getList().get(0); // get first Keyword
person cybersoft    schedule 29.05.2015
comment
Это не работает, потому что «поставщик» «нулевой» - person Artem; 25.06.2021