Android中用注解和反射实现控件的绑定

来源:互联网 发布:松下空调 知乎 编辑:程序博客网 时间:2024/04/28 23:11

<span></span>在日常的Android开发中,经常出现的findViewById()通常让小伙伴们写的很烦躁,一连串重复的代码严重的影响我们的生产力。现在,让我们用一段代码来简化这些烦躁的没有意义的重复吧,废话不多说,直接上代码:
/** * 注解findviewById *  * @param ctx */public static void inject(Activity ctx) {Class<? extends Activity> class1 = ctx.getClass();Field[] fields = class1.getDeclaredFields();for (Field field : fields) {field.setAccessible(true);MyAnnation annotation = field.getAnnotation(MyAnnation.class);if (annotation != null) {try {field.set(ctx, ctx.findViewById(annotation.id()));} catch (Exception e) {e.printStackTrace();}}}}
@MyAnnation(id = R.id.seekBar1)private SeekBar sb1;@MyAnnation(id = R.id.seekBar2)private SeekBar sb2;@MyAnnation(id = R.id.seekBar3)private SeekBar sb3;

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);AnnotationUtil.inject(this);}
注解类:

@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface MyAnnation {public int id();}

0 0
原创粉丝点击