IHolder和IData是AVLib的两个组件,在前面已经使用过了,那么这一篇将会详细说明这两个组件的用法。
IHolder是AVLib中View自动绑定的组件规范,所有@Id使用只能存在IHolder派生的类中。
源码
package com.snicesoft.avlib.rule;
/**
* @author zhe
* @since 2015年4月15日 上午9:54:17
* @version V1.0
*/
public abstract class IHolder {
public abstract void initViewParams();
private Object tag;
public void setTag(Object tag) {
this.tag = tag;
}
public Object getTag() {
return tag;
}
}
@Id详解
value():表示View的ResourceId值
backgroud():表示View的backgroud属性,可配置R.drawable.xx
backgroundColor():表示View的背景颜色,可配置R.color.xx
src():如果被注解字段是ImageView或者ImageView的派生类,表示设置ImageView的src属性
以上的属性设置,会在自动绑定View的关系的时候自动识别并设置。
示例:
@Id(R.id.tvTitle)
TextView tvTitle;
@Id(value = R.id.tvTitle, backgroundColor = Color.RED)
TextView tvTitle;
@Id(value = R.id.imgIcon, src = R.drawable.imgIcon)
ImageView imgIcon;
public class Holder extends IHolder{
@Id(R.id.tvTitle)
TextView tvTitle;
@Id(value = R.id.imgIcon, src = R.drawable.imgIcon)
ImageView imgIcon;
@Override
public void initViewParams(){
}
}
IData是AVLib中数据自动绑定的组件规范,所有@DataBind只能存在IData派生出的类中。
package com.snicesoft.avlib.rule;
/**
* @author zhu zhe
* @since 2015年4月15日 上午9:54:17
* @version V1.0
*/
public abstract class IData {}
IData仅仅只是定义了组件规范,必须要继承IData。
2. @DataBind详解
Id():表示View的ResourceId值
dataType():绑定的数据类型,现在有string、img、adapter、null,默认是string
loadingResId():如果是绑定图片,这个则为加载的缓冲图片
failResId():如果是绑定图片,这个则为加载失败的图片
prefix():当前绑定的值的前缀
suffix():当前绑定的值的后缀
pattern():当前绑定的值如果需要时间格式化,则可以配置完成
示例
@DataBind(id = R.id.tvTitle, prefix = "我是歌手-")
String title = "第二季";
最终tvTitle的值等于”我是歌手-第二季”。
@DataBind(id = R.id.imgIcon,dataType = DataType.IMG, prefix = "http://img.xx.com/woshigeshou/")
String icon = "upload/539728234.png";
最终结果会将http://img.xx.com/woshigeshou/upload/539728234.png这张网络图片加载给imgIcon。
@DataBind(id = R.id.lvData, dataType = DataType.ADAPTER)
ListDemoAdapter adapter = new ListDemoAdapter();
最终结果会将这个adapter适配给lvData这个组件
3. 使用示例
public class Data extends IData{
@DataBind(id = R.id.imgIcon,dataType = DataType.IMG, prefix = "http://img.xx.com/woshigeshou/")
String icon = "upload/539728234.png";
@DataBind(id = R.id.lvData, dataType = DataType.ADAPTER)
ListDemoAdapter adapter = new ListDemoAdapter();
}
可能会有同学问,上面的规范和使用讲完了,怎么还是看不到如何绑定的。所有绑定都在AVLib.java这个类中,我就不贴代码了,大家可以自己去看看。
从这个结构中可以看到initHolder和dataBind,没错这两个就是初始化Holder和绑定数据的方法。
setLoadImg是用来配置图片加载功能,目前appBase的Application中默认使用BitmapUtils作为图片加载器。
目前,IHolder和IData包含常用的绑定,肯定存在有无法完成绑定的内容,还请大家帮忙测试,多多提建议或者一起和我完善和优化。
下面是我创建的一个讨论群,欢迎加入
Android快速开发之appBase——(3).详解IHolder和IData
原文地址:http://blog.csdn.net/jflex/article/details/46440009