How to catch table events to make it lazy

Hello Guys,
I have a similar requirement. I would like to use vaadin table (not paged table) and implement lazy initialization. Also, I can’t use JPA. So, I created a custom bean container as follows.

class LazyLoadedContainer extends BeanContainer { private UserService userService = new UserService(); public LazyLoadedContainer(Class type) { super(type); } @Override public int size() { return userService.size(); } @Override public BeanItem getItem(Object itemId) { return new BeanItem((User) itemId); } @Override public List getItemIds(int startIndex, int numberOfIds) { int endIndex = startIndex + numberOfIds; System.out.println("startIndex: " + startIndex + ", endIndex: " + endIndex); List<User> list = userService.list(startIndex, endIndex); return list; } } When I scroll up and down, the container makes call to the service and it returns the next items. So far so good. But the problem is that, the table treats all items as an array and don’t react to value change events. I mean, when I go up and down with the keyboard keys, the table does not trigger value change event. However, everything works fine if I use addItem(…) inetad of the above approach. Possibly, the addItem() method calls something elese on the container and sets something that I am missing. One way could be to load everything from the service and set them in container and then pass it to the table. Hoever, that is not good as it will blow the JVM. Hence, I want it to go up to the back end on every scroll and bring whatever it wishes, no cache in JVM. Please let me know if you have a clue.
Thanks in advance