QCHuangChao 发表于 2015-07-13 10:49

使用注解简化findViewById

在android开发activity时需要通过findViewById取得布局中的view元素,但如果元素太多时需要重复调用该方法,从而导致代码臃肿。可以通过注解来精简代码。

主要注解类与annot processo@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface ViewField {
    /**
   * view对应的id
   *
   * @return
   */
    int value();

    public static class Processor {
      public static void process(Activity activity) throws Exception {
            Field[] fields = activity.getClass().getDeclaredFields();
            ViewField annot = null;
            for (Field field : fields) {
                annot = field.getAnnotation(ViewField.class);
                if (annot != null) {
                  field.setAccessible(true);
                  field.set(activity, activity.findViewById(annot.value()));
                }
            }
      }
    }
}Activity中调用示例@ViewField(R.id.btn_ok)
Button btnOK;
@ViewField(R.id.et_orig)
EditText etOrig;
@ViewField(R.id.et_dest)
EditText etDest;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.new_task_layout);

    try {
      ViewField.Processor.process(this);
    } catch (Exception e) {
      throw new RuntimeException("加载view错误", e);
    }
}
页: [1]
查看完整版本: 使用注解简化findViewById