Android快速開發之appBase——(3).詳解IHolder和IData,appbaseiholder
Android快速開發之appBase——(3).詳解IHolder和IData
IHolder和IData是AVLib的兩個組件,在前面已經使用過了,那麼這一篇將會詳細說明這兩個組件的用法。
IHolder
IHolder是AVLib中View自動綁定的組件規範,所有@Id使用只能存在IHolder派生的類中。
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
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包含常用的綁定,肯定存在有無法完成綁定的內容,還請大家幫忙測試,多多提建議或者一起和我完善和最佳化。下面是我建立的一個討論群,歡迎加入
279307798