public static <T> void handle(Form<T> form, T formModel) { for (String key : form.getViews().keySet()) { View view = form.getViews().get(key); for (Field f : formModel.getClass().getDeclaredFields()) { if (!f.isAnnotationPresent(FormView.class)) continue; f.setAccessible(true); if (f.getType().equals(String.class)) { try { f.set(formModel, TypeUtils.getTypedValue(new String(), f.getType())); } catch (Exception e) { } } if (!key.equals(f.getName())) continue; if (view instanceof EditText) bindEditTextValue(view, formModel, f); else if (view instanceof Spinner) bindSpinnerValue(view, formModel, f); else if (view instanceof CheckBox || view instanceof RadioButton || view instanceof ToggleButton) bindCompoundButtonValue(view, formModel, f); else if (view instanceof DatePicker) bindDatePickerValue(view, formModel, f); else if (view instanceof TimePicker) bindTimePickerValue(view, formModel, f); } } }
@Override public <T> T handle(Class<T> varClass, Object context) { if (App.getContainer().isRegistered(varClass, "form_model_" + varClass.getName())) return App.getContainer().getObject(varClass, "form_model_" + varClass.getName()); T returnObject = null; try { returnObject = varClass.newInstance(); } catch (Exception e) { throw new RuntimeException(e); } for (final Field f2 : varClass.getDeclaredFields()) { if (f2.isAnnotationPresent(FormView.class)) { f2.setAccessible(true); if (f2.getType().equals(String.class)) { try { f2.set(returnObject, TypeUtils.getTypedValue(new String(), f2.getType())); } catch (Exception e) { } } if (f2.getAnnotation(FormView.class).id() == 0) continue; View view = null; int vid = f2.getAnnotation(FormView.class).id(); if (context instanceof Activity) view = ((Activity) context).findViewById(vid); else if (context instanceof Fragment) view = ((Fragment) context).getView().findViewById(vid); if (view instanceof EditText) bindEditTextValue(view, returnObject, f2); else if (view instanceof Spinner) bindSpinnerValue(view, returnObject, f2); else if (view instanceof CheckBox || view instanceof RadioButton || view instanceof ToggleButton) bindCompoundButtonValue(view, returnObject, f2); else if (view instanceof DatePicker) bindDatePickerValue(view, returnObject, f2); else if (view instanceof TimePicker) bindTimePickerValue(view, returnObject, f2); } } App.getContainer().registerObject("form_model_" + varClass.getName(), returnObject); return returnObject; }