\Android/ Adapter 觀念
前言
Adapter (n.) 適配器; 多功能插頭; 改編者
在Android的世界裡,Adapter是Database和UI(View)之間一個重要的橋樑
,用於連接後端資料和前端介面。
我們常用的View,包括ListView,GridView, Spinner等,常常伴隨著Adapter的使用。
如下圖直觀的表達了Data、Adapter、View三者的關係:
種類
比較常用的有BaseAdapter,SimpleAdapter,ArrayAdapter,SimpleCursorAdapter等。
-
ArrayAdapter可繼承自BaseAdapter,最為簡單,只能展示一行字。
利用ArrayAdapter的
add()
方法新增資料到adapter尾端或是用insert()
新增資料到特定的位置;刪除資料則使用remove()
方法。ListView類別是負責顯示在螢幕上,adapter類別才是負責處理資料的繫結。一旦adapter內的資料有了變更,則adapter和ListView的內容就失去了同步,這是侯需要由adapter發送一個
notifyDataSetChanged()
方法通知ListView重新同步顯示的內容。
-
當ListView需要附加其他更強大的功能時,就必須重新自定義一個Adapter,此時可繼承使用BaseAdapter來建構,具有較高的靈活性。
使用者自定的Layout時需要覆寫
getCount()
,getItem(Int position)
,getItemId(int position)
, 還有getView(int position, View convertView, ViewGroup parent)
那麼多函式。
HeaderViewListAdapter
ListAdapter
ResourceCursorAdapter
-
有最好的擴充性,可以
定義各種各樣的佈局
出來,可以放上ImageView(圖片),還可以放上Button(按鈕),CheckBox(複選框)等等。代碼都可以直接繼承了ListActivity。 -
可以適用於簡單的純文字型ListView,它需要Cursor的字段和UI的id對應起來。如需要實現更複雜的UI也可以重寫其他方法。可以認為是SimpleAdapter
對資料庫的簡單結合
,可以方便地把數據庫的內容以列表的形式展示出來。 -
擴展自Adapter 的適配器是在Spinner 與數據之間的一座橋樑。一個Spinner Adapter 允許定義兩個不同的視圖:一是在Spinner 上顯示數據,另一個是當Spinner 按下時在下拉列表裡顯示數據。
WrapperListAdapter