Лично я никогда не использовал ListSelect, но я нашел это в API документах :
Это простой список выбора без, например, поддержки новых элементов,отложенная загрузка и другие расширенные функции.
Я бы порекомендовал BeanItemContainer
.Вы можете использовать его следующим образом:
// Create a list of Strings
List<String> strings = new ArrayList<String>();
strings.add("Hello");
// Create a BeanItemContainer and include strings list
final BeanItemContainer<String> container = new BeanItemContainer<String>(strings);
container.addBean("World");
// Create a ListSelect and make BeanItemContainer its data container
ListSelect select = new ListSelect("", container);
// Create a button that adds "!" to the list
Button button = new Button("Add to list", new Button.ClickListener() {
public void buttonClick(ClickEvent event) {
container.addBean("!");
}
}
// Add the components to a layout
myLayout.addComponent(button);
myLayout.addComponent(select);
Недостатком (или преимуществом, которое зависит от :) это то, что вы не можете добавлять повторяющиеся записи в BeanItemContainer.В приведенном выше примере восклицательный знак добавляется только один раз.
Вы можете получить коллекцию строк, позвонив по номеру:
Collection<String> strings = container.getItemIds();
Если вам необходимо поддерживать повторяющиеся записи, взгляните на IndexedContainer .С помощью IndexedContainer вы можете добавить свойство String, вызвав myIndexedContainer.addContainerProperty("caption", String.class, "");
и присвоить каждому элементу уникальный itemId (или позволить контейнеру автоматически генерировать идентификаторы).