public boolean edited() {
   boolean edited = false;
   for (FormFieldWrapper fieldWrapper : fieldWrappers) {
     edited |= fieldWrapper.edited();
   }
   return edited;
 }
 public boolean validates() {
   boolean validates = true;
   for (FormFieldWrapper fieldWrapper : fieldWrappers) {
     validates &= fieldWrapper.validates();
   }
   return validates;
 }
 public Data submit() {
   for (FormFieldWrapper fieldWrapper : fieldWrappers) {
     fieldWrapper.submit();
   }
   this.form.submit();
   return this.form;
 }
 private FormWrapper(Context context, LinearLayout linearLayout, Data form) {
   this.form = form;
   this.layout = linearLayout;
   this.layout.removeAllViews();
   for (Field field : form.getFields()) {
     FormFieldWrapper fieldWrapper = FormFieldFactory.createFromField(context, field);
     if (fieldWrapper != null) {
       layout.addView(fieldWrapper.getView());
       fieldWrappers.add(fieldWrapper);
     }
   }
 }
 public void setReadOnly(boolean b) {
   for (FormFieldWrapper fieldWrapper : fieldWrappers) {
     fieldWrapper.setReadOnly(b);
   }
 }
 public void setOnFormFieldValuesEditedListener(
     FormFieldWrapper.OnFormFieldValuesEdited listener) {
   for (FormFieldWrapper fieldWrapper : fieldWrappers) {
     fieldWrapper.setOnFormFieldValuesEditedListener(listener);
   }
 }