2022年2月1日 星期二

Android Studio - ListView 基本介紹(二十七)

Android Studio - ListView 基本介紹(二十七):

ListView(列表)是開發 Android 中常用元件之一,它能把數據用列表方式顯示出來,而 ListView 必須利用 Adapter 將資料載入,Adapter 是負責管理 ListView 每一列的資料與畫面,由於 ListView 的編程簡單,對於一些簡單輕量級資料的顯示是可以應付自如。

Android Studio ListView 顯示資料內容
操作系統:Windows 7 64-bit 版本
開發環境:Android Studio 4.0.1 版本
原程式:C:\Development\Development_Android\Android_Project\DIY-Android-007-09 ListView Basic
程式:C:\Development\Development_Android\Android_Project\DIY-Android-007-09 ListView Basic

Data Source + Aapter + ListView的處理資料結構
ListView 是 AdatpterView 的子類,作為資料的容器需要一個能為之處理資料以及畫面的 ListAdapter。Adatper 是作為 AdapterView 與資料間的橋樑,它能為每一筆資料製作一個畫面 ( View ) ,並創建一個視圖表示每個數據項。而常見 ListAdapter 的次類別有 ArrayAdapter、CursorAdapter、SimpleAdapter、SimpleCursorAdapter 和 BaseAdapter,其繼承關係如下圖所示。

Adatpter 繼承結構圖
Adapter 的類型:

符號

描述

ArrayAdapter

將陣列的值包裝成清單項目,提供給 Adapter,清單只能顯示一行文字。

SmipleAdapter

將 List 集合的值包裝成列表項目。可以自訂各種效果,功能強大。

SmipleCursorAdapter               

輸入資料是由資料庫(SQLite)查詢的 Cursor(資料庫的游標物件)結果時使用,與 SmipleAdapter 類似,只不過它需將 Cursor 的欄位與元件ID 對應,直接將資料庫的內容以清單的方式展現出來。

BaseAdapter

是一個抽象的類別,繼承它需要較多的客製化(custom),通常它可以對各列表項進行最大限度的定制,也具有很高的靈活性。


常見 ListAdapter 次類別的使用:
  • ArrayAdapter:輸入資料為陣列或是 List 集合,ArrayAdapter 較為簡單易用,但每個列表項只能是 TextView,功能實現的局限性非常大。
  • SimpleAdapter:輸入資料為表格時(List< ? extends Map< String , ? >>),用於將 XML 中控制項綁定作為清單項的資料來源,可對每個列表項進行定制(自訂佈局),能滿足大多數開發的需求場景,靈活性較大。
  • SimpleCursorAdapter:輸入資料是由資料庫(SQLite)查詢的Cursor時,將列從光標映射到 XML 文件中定義的 TextViews 或 ImageViews 的簡單適配器。可以指定所需的列、要顯示列的視圖以及定義這些視圖外觀的 XML 文件。綁定分兩個階段進行。
  • BaseAdapter:需完整的客製化(Customization),可自訂 ListView,通用使用於被擴展。擴展 BaseAdapter 可以對各個列表項進行最大程度的定制

ListView 屬性:

屬性

描述

android:id

這是唯一標識的布局的ID。

android:divider

這是可拉伸或顏色列表項的繪製。

android:dividerHeight

這指定分頻器的高度。這可能是px, dp, sp, in 或 mm。

android:entries

指定引用數組的資源,將用於填充ListView。

android:footerDividersEnabled

當設置為false,在ListView將不繪製每個頁腳視圖之前的分隔。默認值是true。

android:headerDividersEnabled

當設置為false,在ListView將不繪製每個標題視圖之後的分隔。默認值是true。


BaseAdapter 抽象類別的常用函式:

屬性

描述

getCount()

取得item的數量,通常數量就是從建構子傳入的陣列或是集合大小

getItem(int position)

取得 ListView 列表於 position 位置上的 Item

getItemId(int position)

取得 ListView 列表於 position 位置上的 Item 的 id

getView(int position, View convertView, ViewGroup parent)

設定與回傳 convertView 作為顯示在這個 position 位置的 Item 的 View


參考網址:
※ Android Developers - ListView

2022年 2月 1日(Tue)天氣報告
氣溫:37.0°F / 3.0°C @ 07:00
風速:每小時 6公里
降雨機會:9%
相對濕度:百分之 83%
天氣:多雲
※ 農曆新年快樂!身體健康!萬事如意!世界和平!

沒有留言:

張貼留言