Android清單元件介紹(ListView-Adapter)

作者 | 2016-03-26

清單元件以列表方式展示資料,尤其以「ListView」元件最具代表性,它能在Activity中展示如陣列、簡易表單等直列式的資料,如下圖:

A4305

而常使用的下拉選單元件-「Spinner」也屬於清單元件的一種,使用者按下Spinner元件後出現類似ListView的對話框供使用者點選其中一個項目,如下圖:

A4307

而格狀清單元件「GridView」則是以多欄多列方式以格狀方式配置的元件,常用在應用程式的主功能頁面上,雖然展示資料項目的方式不同,但也是清單元件的一種,如下圖:

A4364

在設計清單元件時,考量到展示項目時的多種選擇性與資料來源的多元性,將資料展示與資料來源分離出來,由「Adapter」類別負責,開發人員可依清單元件的展示需求與資源來源處理先建立、設計符合需求的Adapter,再傳至ListView等元件中,ListView會依照身上的Adapter讀取資料後,再呼叫Adapter的相關方法展示每一列,如下圖。

A4310

因此,只要用對或設計正確的Adapter類別,ListView就會依照設計展示正確的清單資料。學習如何使用Adapter,就會使用各類的清單元件了。

Adapter

「android.widget.Adapter」是一個Java介面(interface),是一個規範Adapter應該實作什麼方法的規範,也可說是一個家族的最高層成員,所有在它底下的類別都要實作它所訂定的方法,如getCount方法可取得清單中的項目數量、getView方法可得到特定展示的元件(View)等。

Adapter家族

android.widget.BaseAdapter」是第一個實作了Adapter規範方法的類別,但它仍是一個抽象類別,代表它仍未實作所有的方法,留下幾個供繼承它的類別自行實作,這個家族常用成員關係圖如下:

A4311

上圖的BaseAdapter與CursorAdapter是抽象類別,其他ArrayAdapter、SimpleAdapter與SimpleCursorAdapter都是一般類別,可以直接建構出物件的類別。

  1. ArrayAdapter

當資料來源是陣列或List集合時,可使用ArrayAdapter

  1. SimpleCursorAdapter

當資料來源是由資料庫(SQLite)查詢的Cursor結果時,可使用SimpleCursorAdapter。

  1. SimpleAdapter

資料來源是類似表格有列與欄的時候,可使用Map集合儲存列,再使用List將每一列收集後,使用SimpleAdapter。

  1. BaseAdapter

當有客製化需求時,可繼承BaseAdapter後再自行實作對應的方法。

接下來,在ListView單元中以ArrayAdapter實作簡單範例後,並在GridView一節中實作BaseAdapter。

Android SDK的資源

在使用ListView、Spinner或GridView等元件時,常會使用Android SDK內建資源,除了專案中的資源(/res/下的資源)以外,Android系統內部也預先設計了如圖檔、版面配置XML檔的資源,在SDK中可找到這些資源檔案,請使用檔案總管(或Mac的Finder),先到SDK的安裝資料夾下:

A4320

再進入「platforms/android-23/data/res/」資源夾下,如下圖:

A4321

res資料夾下即是Android SDK的資源目錄,請再進入「layout」資料夾,裏面即是Android SDK內建的版面配置XML檔,這些檔案是提供給應用程式使用,可幫助開發人員設計出具一致性的使用者介面。如果使用者已習慣使用Android中清單的外觀,在應用程式時也可使用同樣的設計版面。

比如說,一個清單項目中如果有兩個子項目(一列有兩項資料),使用者都習慣如下圖的展示方式(一上一下,下方字較小較淡):

A4322

那當你在設計自己應用程式清單時,可以考慮使用Android SDK內建的「res/layout/simple_list_item_2.xml」,它就是一個版面配置XML檔,內容如下:

A4323

有兩個已配置好的TextView元件(id為text1與text2),字型、間距都已設計好的一個XML檔,而在程式中可使用「android.R.layout.simple_list_item_2」這個id值取得Android SDK中的資源進行後續的設定。

常用的Android SDK版面資源有:

  • R.layout.simple_list_item_1

適合清單元件,每列資料只有一項。

  • R.layout.simple_list_item_2

適合清單元件,每列有兩項資料。

  • R.layout.simple_spinner_item

適合下拉選單Spinner元件,簡單的項目文字

  • R.layout.simple_spinner_dropdown_item

適合下拉選單Spinner元件,較美觀的項目資料展示,文字右方有單選鈕圖示

在瞭解清單元件的架構與觀念後,記得要接著練習一下實作方法,可參考:

清單元件實作-清單式功能表

清單元件實作-下拉式選單Spinner

清單元件實作-GridView圖示功能表

相關文章:

Category: Adapter Android ListView 標籤:,

關於 Hank Tom

專長為程式語言、雲端服務開發,Linux系統管理, 任職:利拓科技 技術長,海林行動科技 技術總監 輔仁大學 兼任助理教授 ,為 Android高效入門>深度學習、CentOS 7建置、管理與伺服器架設實戰、Java網路程式設計、雲端網頁程式設計-Google App Engine應用實作 等書作者

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *