用反射和注解,绑定控件的id和点击事件
2016-05-16 10:34
531 查看
最近才开始接触反射和注解的内容,根据项目的中例子,做了一个demo,用于帮定控件的id和点击事件!感谢公司的技术总监的指导!
1.首先要先自定义两个注解,一个是绑定id的,一个是点击事件的
2:最主要的一步就是,怎么用注解进行工作的
如上图所示,就是这样,把所有需要进行点击的控件id都列出来,然后,每个控件之上,给予他自己的id。
4:这是最简单,也是最重要的一步
在初始化的时候
上边这两行代码,如果不写的话,没有一点用。
就是这么简单,完全可以运用到自己的项目中,不用没都去findviewById了,也算属于一个懒人的方法吧!
demo下载
http://download.csdn.net/detail/jiajia1112223/9521311
1.首先要先自定义两个注解,一个是绑定id的,一个是点击事件的
import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * id 的绑定点击事件 * @author ljg * */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface Onclick { //获取需要 设置点击事件的id int [] id () default {}; }
/** * 绑定id 注解 * @author ljg * */ @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface FindviewByid { //绑定id int id () default 0; }
2:最主要的一步就是,怎么用注解进行工作的
/** * 通过注解判断 是否已经标注的管理类 * * @author ljg * */ public class _InfaceManger { /** * 绑定 活动的id * * @param az */ public static void findViewId(Activity az) { Class clazz = az.getClass(); // 获取activity中的所有字段 Field[] fields = clazz.getDeclaredFields(); for (Field ff : fields) { // 字段中是否已经被标注 if (ff.isAnnotationPresent(FindviewByid.class)) { // 拿到被标注的字段的注解对象 FindviewByid fid = ff.getAnnotation(FindviewByid.class); // 拿到字段标注的id int id = fid.id(); // 非默认值 if (id > 0) { // 通过反射拿私有对象,徐加上这一句 ff.setAccessible(true); try { View view = az.findViewById(id); //将指定对象变量上此 Field 对象表示的字段设置为指定的新值。 ff.set(az, view); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }3 ,这事要是说通的一点也不难,这最后一步就是用了
如上图所示,就是这样,把所有需要进行点击的控件id都列出来,然后,每个控件之上,给予他自己的id。
4:这是最简单,也是最重要的一步
在初始化的时候
上边这两行代码,如果不写的话,没有一点用。
就是这么简单,完全可以运用到自己的项目中,不用没都去findviewById了,也算属于一个懒人的方法吧!
demo下载
http://download.csdn.net/detail/jiajia1112223/9521311
相关文章推荐
- 企业数据标准,如何从理论走向实践?
- 1013 数素数
- android-UI(pulltorefresh)
- matlab、vc++6.0、opencv多行注释快捷键
- xutils使用手册(二)——数据库
- Java常用包
- css水平垂直居中方法(一)
- 段落p元素内的响应式文本布局就靠rem单位实现
- JQuery validate验证规则
- Leftmost Digit
- Leftmost Digit
- AES加密CBC模式兼容互通四种编程语言平台【PHP、Javascript、Java、C#】
- win7下telnet功能的启用及启用telnet回显功能
- 泛化、实现、依赖和关联的区别
- SVN clean up 失败解决方法
- Android gson解析json数据工具类
- 安卓透明颜色设置
- Android Studio “Cannot resolve symbol” 解决办法
- 15 个 Android 通用流行框架大全
- Dubbo架构设计