public void setItems (T[] items) {
		if (items == null ) throw new IllegalArgumentException("items cannot be null.");
		else if(adapter == null) throw new IllegalArgumentException("no adapter attached, use setAdapter");
		this.items = items;
		clear();
		for (int i = 0; i < items.length; i++) {
			
			// Le hack?
			final int currentIndex = i;
			
			// Create a row
			final Table row = adapter.setupRow(items[i], currentIndex);
			row.setBackground(style.unselected);
			
			row.addListener(new ClickListener() {
				// Assign 
				int index = currentIndex;
				
				@Override
				public void clicked(InputEvent event, float x, float y) {
					if(selectedIndex != index || selected == null) {
						if(selected != null) selected.setBackground(style.unselected);
						selectedIndex = index;
						
						ChangeEvent changeEvent = Pools.obtain(ChangeEvent.class);
						fire(changeEvent);
						Pools.free(changeEvent);
						
						selected = row;
						row.setBackground(style.selection);
					} else if(selectedIndex == index) {
						selected = null;
						selectedIndex = -1;
						row.setBackground(style.unselected);
					}
				}
			});
			
			add(row);
			row();
		}
	}