@SuppressWarnings("unchecked") public void testEnum() throws Exception { // As Label Contact contact = new PersonalContact(); contact.setGender(Gender.MALE); AndroidMetawidget metawidget = new AndroidMetawidget(null); SimpleBindingProcessorConfig config = new SimpleBindingProcessorConfig(); config.setConverter( Gender.class, new Converter<Gender>() { public Gender convertFromView(View widget, Object value, Class<?> intoClass) { return Gender.valueOf((String) value); } public Object convertForView(View widget, Gender value) { if (widget instanceof Spinner) { return value; } return value.name(); } }); metawidget.setWidgetProcessors(new SimpleBindingProcessor(config)); metawidget.setToInspect(contact); Map<String, String> attributes = CollectionUtils.newHashMap(); TextView label = new TextView(null); attributes.put(NAME, "gender"); attributes.put(TYPE, Gender.class.getName()); metawidget .getWidgetProcessor(SimpleBindingProcessor.class) .processWidget(label, PROPERTY, attributes, metawidget); assertEquals("MALE", label.getText()); // As Spinner metawidget.setToInspect(contact); Spinner spinner = metawidget.findViewWithTags("gender"); assertEquals(Gender.MALE, spinner.getSelectedItem()); assertEquals(null, ((ArrayAdapter<Gender>) spinner.getAdapter()).getItem(0)); assertEquals(Gender.MALE, ((ArrayAdapter<Gender>) spinner.getAdapter()).getItem(1)); assertEquals(Gender.FEMALE, ((ArrayAdapter<Gender>) spinner.getAdapter()).getItem(2)); assertEquals(3, ((ArrayAdapter<String>) spinner.getAdapter()).getCount()); }