其實android的這種機制和ios的UITableView顯示的方式如出一轍,不過理解後,對後面android的深入學習會很有協助。
BaseAdapter ListView是Android開發過程中較為常見的組件之一,它將資料以列表的形式展現出來。一般而言,一個
ListView由以下三個元素組 成:1.View,用於展示列表,通常是一個xml所指定的。大家都知道Android
的介面基本上是由xml檔案負責完成的,所以ListView的界 面也理所應當的使用了xml定義。例如在
ListView中經常用到的“android.R.layout.simple_list_item_1”等, 就是Android系統內部定義好的一個xml
檔案。
2.適配器,用來將不同的資料對應到View上。不同的資料對應不同的適配器,如ArrayAdapter,CursorAdapter,
SimpleAdapter等, 他們能夠將數組,指標指向的資料,Map等資料對應到View上。也正是由於適配器的
存在,使得ListView的使用相當靈活,經過適配器的處理後,在 view看來所有的資料對應過來都是一樣
的。3.資料,具體的別映射的資料和資源,可以是字串,圖片等,通過適配器,這些資料將會被現實到
ListView上。所有的資料和資源要顯示到ListView上都通過適配器來完成。
系統已有的適配器可以將基本的資料顯示到ListView上,如:數組,Cursor指向的資料,Map裡的資料。
但是在實際開發中這些系統已實現 的適配器,有時不能滿足我們的需求。而且系統內建的含有多選功能
ListView在實際使用過程中會有一些問題。要實現複雜的ListView可以通過繼 承ListView並重寫相應的
方法完成,同時也可以通過繼承BaseAdapter來實現。通過文檔可以看出,ArrayAdapter,CursorAdapter,
SimpleAdapter都繼承於BaseAdapter。所以通過繼承BaseAdapter就可以完成自己的Adapter,可以將任何
複雜組合的資料和資源,以任何你想要的顯示效果展示給大家。
繼承BaseAdapter之後,需要重寫以下四個方法:getCount,getItem,getItemId,getView。
ListView繪製的過程如下:首先,系統在繪製ListView之前,將會先調用getCount方法來擷取Item的個數。
之後每繪製一個 Item就會調用一次getView方法,在此方法內就可以引用事先定義好的xml來確定顯示的
效果並返回一個View對象作為一個Item顯示出來。也 正是在這個過程中完成了適配器的主要轉換功能,
把資料和資源以開發人員想要的效果顯示出來。也正是getView的重複調用,使得ListView的使用更 為簡單
和靈活。這兩個方法是自定ListView顯示效果中最為重要的,同時只要重寫好了就兩個方法,ListView就
能完全按開發人員的要求顯示。而 getItem和getItemId方法將會在調用ListView的回應程式法的時候被調用到。
所以要保證ListView的各個方法有效話,這兩個方 法也得重寫。比如:沒有完成getItemId方法的功能
實現的話,當調用ListView的getItemIdAtPosition方法時將會得不到想 要的結果,因為該方法就是調用了
對應的適配器的getItemId方法