最近做個項目,要用到異步加載,動態刷新UI等。看了下2.2系統的圖庫源碼,感覺寫的不錯。同時又把ListView拿出來研究了下,做個筆記。
先上圖:
1. Android中大量用到了適配器模式,比如ListView、GridView等。
所謂的適配器模式,我的理解是類似電源適配器或者轉接頭之類的轉換器。
電源適配器將不適合機器工作的電壓輸出為機器適合的電壓。轉接頭就更好理解了,將不配套的插頭和插座連接在一起。適配器模式跟這個類似,將兩個不相干的類作用在一起,使它們能配套適用。
Android裡面的適配器結構基本如上圖所示。還有其他的各種適配器類如SimpleAdapter,SimpleCursorAdapter等都是直接或間接地繼承BaseAdapter。我們自定義ListView時所用到的Adapter同樣要繼承BaseAdapter必須實現幾個方法:getCount(),getItem(int position),getItemId(int position),getView(int position, View convertView, ViewGroupparent)
為什麼會這樣呢?
注意到Spinnerdapter和ListAdapter都是接口,它們繼承了Adapter接口。而BaseAdapter是一個抽象類,它實現上述兩個接口,但它並沒有實現上面提到的那四個方法。所以構建BaseAdapter的子類時必須要實現那四個沒有實現的四個接口方法。其實在Android中有很多這樣的例子,在繼承某個類時會默認讓你Override一些方法,這些方法就是父類中沒有實現的接口方法。
重寫了這四個方法後適配器才能夠和控件合作,將數據和控件UI聯系起來。