public void testNestedMetawidget() { Contact contact = new PersonalContact(); AndroidMetawidget metawidget = new AndroidMetawidget(null); Stub stub = new Stub(null); stub.setTag("dateOfBirth"); metawidget.addView(stub); metawidget.setToInspect(contact); // Just TableLayout assertEquals(null, contact.getFirstname()); assertEquals(null, contact.getAddress().getStreet()); ((EditText) metawidget.findViewWithTags("firstname")).setText("Foo"); ((EditText) metawidget.findViewWithTags("address", "street")).setText("Bar"); assertEquals( metawidget, metawidget .findViewWithTags("address", "street") .getParent() .getParent() .getParent() .getParent() .getParent() .getParent() .getParent() .getParent() .getParent()); assertEquals( metawidget, metawidget .findViewWithTags("address", "postcode") .getParent() .getParent() .getParent() .getParent() .getParent() .getParent() .getParent() .getParent() .getParent()); metawidget.getWidgetProcessor(SimpleBindingProcessor.class).save(metawidget); assertEquals("Foo", contact.getFirstname()); assertEquals("Bar", contact.getAddress().getStreet()); // With TabSheetLayoutDecorator metawidget.setLayout( new TabHostLayoutDecorator( new LayoutDecoratorConfig<View, ViewGroup, AndroidMetawidget>() .setLayout( new org.metawidget.android.widget.layout.TableLayout( new LinearLayoutConfig())))); ((EditText) metawidget.findViewWithTags("firstname")).setText("Foo1"); ((EditText) metawidget.findViewWithTags("address", "street")).setText("Bar1"); assertTrue( metawidget .findViewWithTags("address", "street") .getParent() .getParent() .getParent() .getParent() .getParent() .getParent() .getParent() .getParent() .getParent() instanceof TabHost); metawidget.getWidgetProcessor(SimpleBindingProcessor.class).save(metawidget); assertEquals("Foo1", contact.getFirstname()); assertEquals("Bar1", contact.getAddress().getStreet()); }