\Android/ Adapter 觀念

前言

Adapter (n.) 適配器; 多功能插頭; 改編者。

在Android的世界裡,Adapter是Database和UI(View)之間一個重要的橋樑,用於連接後端資料和前端介面。

我們常用的View,包括ListView,GridView, Spinner等,常常伴隨著Adapter的使用。

如下圖直觀的表達了Data、Adapter、View三者的關係:

f15b47d3418249a43e56a800abc75e83

種類

比較常用的有BaseAdapter,SimpleAdapter,ArrayAdapter,SimpleCursorAdapter等。

  1. ArrayAdapter可繼承自BaseAdapter,最為簡單,只能展示一行字。
  2. 利用ArrayAdapter的add()方法新增資料到adapter尾端或是用insert()新增資料到特定的位置;刪除資料則使用remove()方法。
  3. ListView類別是負責顯示在螢幕上,adapter類別才是負責處理資料的繫結。一旦adapter內的資料有了變更,則adapter和ListView的內容就失去了同步,這是侯需要由adapter發送一個notifyDataSetChanged()方法通知ListView重新同步顯示的內容。
  1. 當ListView需要附加其他更強大的功能時,就必須重新自定義一個Adapter,此時可繼承使用BaseAdapter來建構,具有較高的靈活性。
  2. 使用者自定的Layout時需要覆寫getCount(), getItem(Int position), getItemId(int position), 還有 getView(int position, View convertView, ViewGroup parent)那麼多函式。

有最好的擴充性,可以定義各種各樣的佈局出來,可以放上ImageView(圖片),還可以放上Button(按鈕),CheckBox(複選框)等等。代碼都可以直接繼承了ListActivity。

可以適用於簡單的純文字型ListView,它需要Cursor的字段和UI的id對應起來。如需要實現更複雜的UI也可以重寫其他方法。可以認為是SimpleAdapter對資料庫的簡單結合,可以方便地把數據庫的內容以列表的形式展示出來。

擴展自Adapter 的適配器是在Spinner 與數據之間的一座橋樑。一個Spinner Adapter 允許定義兩個不同的視圖:一是在Spinner 上顯示數據,另一個是當Spinner 按下時在下拉列表裡顯示數據。

參考來源

  1. ListView | Android Developers
  2. [Android] 自訂ListView « Huli’s Blog
  3. Android之Adapter用法总结 – Devin Zhang – 博客园
  4. Android入門2:從GridView控件使用到自定義Adapter – 簡書
  5. 雜技本 – Android程式開發: ArrayAdapter的使用
  6. Android API 中文(50) —— SpinnerAdapter – 農民伯伯- 博客園