About the CollectionContainer category

CollectionContainer: Sometimes you only have a list or array of objects you’d like to bind to a ListSelect or a Table and forget about the fancy Container features like lazy loading or automatic updates.

Creating a Container from a list or array of beans, string, integers is easy. And you can configure the CollectionContainer to have different type of ids. CollectionContainer is a read-only Container implementation suitable best for small amounts of data, backed simply by a collection storage. Here are some samples:

Use the object itself as id (like in the stock BeanItemContainer):
select.setContainerDataSource(CollectionContainer.fromBeans(myBeans));
select.setContainerDataSource(CollectionContainer.fromPrimitives(new String{“One”,“Two”,“Three”}));

Index based id that allows duplicate objects:
select.setContainerDataSource(CollectionContainer.fromBeans(myBeans,true));
select.setContainerDataSource(CollectionContainer.fromPrimitives(new String{“One”,“Two”,“Three”,“One”},true));

A two dimensional array to a table using:
String array = new String { new String{“One”,“Two”}, new String {“Three”,“Four”}};
table.setContainerDataSource(CollectionContainer.fromPrimitives(array));

And you can even use a bean property as the item id:
select.setContainerDataSource(CollectionContainer.fromBeans(myBeans,“idField”));

This is an experimental component, but it has been successfully utilized in many projects already. It only supports reading, not writing or adding items to container.