apt-注解开发-2-定义操作api
来源:互联网 发布:一个淘宝店铺卖多少钱 编辑:程序博客网 时间:2024/04/26 13:36
定义操作api
- [1]创建一个androidModule
- [2]定义findView的接口(多种findView所以做成接口 方便扩展)命名为ViewFinder
- [3]写一个activity的findview的实现类 命名为ActivityViewFinder
- [4]定义一个bindView接口(用于绑定view和解绑view)
- [5]写一个bindView的实现类
- [6]注意该module的gradle中jdk的版本也要一致 这里是7
public interface ViewFinder { View findView(Object o,int id);}public interface ViewBinder<T> { void bindView(T host,Object object,ViewFinder find); void unBindView(T host);}//这里只做一个activity的findViewpublic class ActivityViewFinder implements ViewFinder { @Override public View findView(Object o, int id) { View view=((Activity)o).findViewById(id);//返回一个view便于debug查看结构 可以直接简化 return ((Activity)o).findViewById(id); }}public class LzfViewBinder { //activity findview private static final ActivityViewFinder activityFind=new ActivityViewFinder(); //bindview的map集合 private static final Map<String,ViewBinder> binderMap=new LinkedHashMap<>(); public static void bind(Activity activity){ bind(activity,activity,activityFind); } /** * '注解绑定 * * @param host 表示注解 View 变量所在的类,也就是注解类 * @param object 表示查找 View 的地方,Activity & View 自身就可以查找,Fragment 需要在自己的 itemView 中查找 * @param finder ui绑定提供者接口 */ private static void bind(Object host, Object object, ViewFinder finder) { String className = host.getClass().getName(); try { ViewBinder binder = binderMap.get(className); if (binder == null) { Class<?> aClass = Class.forName(className + "$$ViewBinder"); binder = (ViewBinder) aClass.newInstance(); binderMap.put(className, binder); } if (binder != null) { binder.bindView(host, object, finder); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } /** * 解除注解绑定 ActivityViewFinder * * @param host */ public static void unBind(Object host) { String className = host.getClass().getName(); ViewBinder binder = binderMap.get(className); if (binder != null) { binder.unBindView(host); } binderMap.remove(className); }}
感谢
http://www.cnblogs.com/whoislcj/p/6168641.html
阅读全文
0 0
- apt-注解开发-2-定义操作api
- apt 注解开发-1-定义注解
- apt-注解开发-4-使用
- apt-注解开发-3-自定义processor
- 注解(annotation) 2___使用apt 处理注解
- mybitis注解开发_curd操作
- 注解处理工具apt
- 定义注解
- 注解apt工具示例程序
- 编译期注解之APT
- java注解与APT技术
- 使用编译时注解annotationProcessor(取代android-apt)开发组件化路由框架
- Annotation注解APT(一):什么是Annotation注解
- Annotation注解APT(二):自定义注解
- java注解学习2,注解的定义与反射调用
- 2、spring非注解/注解开发
- arcgis api for silverlight开发系列之三:定义坐标系
- 引路蜂地图API:开发包中核心类定义
- TFRecord格式数据和类似cifar的bin格式文件
- 极其方便的系统原生图片选取库,已适配Android 7.0
- Ubuntu14.04安装Ryu控制器
- 关于Data truncation: Incorrect string value: '' for column 问题的解决办法
- CSS并不简单--z-index引发的思考
- apt-注解开发-2-定义操作api
- Github 开源:升讯威 Winform 开源控件库( Sheng.Winform.Controls)
- Java与MongoDB的配合使用备忘2-CURD操作具体实例
- Java Web篇:导出等比例图片到Excel
- sql-事务
- 获取本地视频缩略图方法
- poj 2151 概率DP
- 生产者与消费者--Java基础071
- iOS进阶(二)Objective-C底层原理