Android在使用控件前需要先初始化控件,在以前我们一般都是通过fidViewById方法找到指定id的控件,使用这种方式定义控件时,如果控件的数量很多,就需要指定非常多的findViewById操作,现在我们来探究一下如何通过注解的方式代替findViewById操作。
我们都是到interface是定义了一个接口类,如果在interface前面加一个符号“@”,就成了自定义注解,如下:我们就定义了一个自定义注解,
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Bind {
int value() default -1;
}
在使用前需要:
/**
* 注解findViewById()
*
* @param activity Activity
*/
public static void autoFindView(Activity activity) {
Class<?> cls = activity.getClass();
Field[] vid = cls.getDeclaredFields();
for (Field field : vid) {
if (field.isAnnotationPresent(Bind.class)) {
Bind findView = field.getAnnotation(Bind.class);
int id = findView.value();
if (id > 0) {
field.setAccessible(true);
try {
field.set(activity, activity.findViewById(id));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
这个方法可以放在BaseActivity中执行,在Activity中我们就可以直接通过注解的方式初始化控件:
@Bind(R.id.username)
private EditText username;
@Bind(R.id.password)
private EditText password;
@Bind(R.id.login)
private Button login;
添加注解的控件可以直接使用,比如按钮的点击事件监听和文本控件的内容修改,使用注解能让代码看起来更加简约。
该博客探讨了如何使用注解来代替传统的findViewById方法初始化Android控件,以减少代码量并提高可读性。通过创建自定义注解@Bind,并在BaseActivity中解析注解,可以直接在Activity中注解控件并立即使用,如@Bind(R.id.username) private EditText username等,简化了按钮点击事件和文本内容修改等操作的实现。
373

被折叠的 条评论
为什么被折叠?



