【Anroid】第9章 列表視圖(1)--ListView相關類及其適配器,anroid--listview
分類:C#、Android、VS2015;
建立日期:2016-02-18 一、簡介
列表視圖(ListView)是Android應用程式中使用最頻繁的UI組件,從無處不在短菜單選項列表到冗長的連絡人或internet收藏夾列表……都會用它來實現。
ListView控制項的用法非常靈活,既可以使用內建的視圖呈現基本的樣式,也可以用自訂視圖呈現各種特殊的視覺效果。
要完全掌握Android提供的ListView控制項的用法,需要解決下面的問題:
(1)如何用Android內建的視圖呈現列表視圖中的每一項
(2)如何?不同的適配器類。
(3)如何用自訂的視圖呈現列表視圖中每一項的外觀。
(4)如何讀取SQLite資料庫填充清單項目。
(5)ListView效能最佳化以及活動生命週期對ListView的影響。
ListView控制項要求提供一個適配器(Adapter)來描述每一行的視圖格式。在Android應用程式中,既可以直接使用Android內建的適配器,也可以建立自訂的適配器。
實際上,在前面的章節中,我們已經多次使用ListView了,只不過這一章再將其系統地介紹一下它的基本用法而已。
1、ListView相關類
ListView中的每一行都有自己的View。該View可能是在Android.Resources中定義的內建視圖(built-in views),也可能是你自訂的視圖。每一行既可以使用相同的View,也可以使用不同的View。
是呈現ListView時需要使用的主要類,學習這一章的內容之前,最好先仔細看一下各個類之間的繼承關係:
(1)ListView
UI元素,用於呈現一系列可滾動的清單項目。在手機上,如果希望讓清單項目佔用整個螢幕,可讓活動頁直接繼承自ListActivity類而不是繼承自Activity類。如果不希望讓這些清單項目佔用整個螢幕,可在布局頁中添加一個或多個ListView來呈現。
(2)View
ListView上下文要求每行都必須提供一個View,這些View可以是任何UI元素。
2、ListView適配器類
下面列出這些視圖適配器的含義及其應用場合。
(1)BaseAdapter類
BaseAdapter是所有適配器的基類,該類實現了將ListView綁定到資料來源的準系統。當視圖中的元素內容是動態或者不是事先確定的,可以用繼承自BaseAdapter的類去實現。
(2)BaseAdapter<T>類--最常用
在實際項目中,很多時候應用程式一般都有自己的業務實體類,而不僅僅是字串的集合。為了擴充這些功能,大部分情況下都是用繼承自BaseAdapter<T>的類來實現自訂的適配器。
用繼承自BaseAdapter<T>的類來實現自訂的適配器是建議的實現方式。
(3)ArrayAdapter類
除了BaseAdapter類以外,安卓系統還內建了ArrayAdapter類。不過,用C#編寫Android程式時,一般很少用它來實現。
(4)ArrayAdapter<T>類
對於多列資料項目,除了用繼承自BaseAdapter<T>類來實現以外,還可以用自訂的繼承自ArrayAdapter<T>的泛型類來呈現,不過,這種用法在C# 編程中並不多見,最常用的還是用繼承自BaseAdapter<T>類來實現。
(5)ListActivity類
安卓系統內建了ListActivity類,在活動頁中,也可以直接讓自訂的活動繼承自ListActivit而不是繼承自Activity,此方式不需要自訂布局,適用於比較簡單的情況。
ListActivity會自動建立列表視圖,並公開一個ListAdapter屬性,擴充類通過該屬性,即可呈現行視圖。 二、本章樣本主介面
1、運行
2、MainActivity.cs檔案中對應的代碼
chItems.Add(new Chapter(){ ChapterName = "第9章 列表視圖", ChapterItems = new ChItem[] { new ChItem { type=typeof(ch0901BuildInViewsMain), Title="例9-1 內建行視圖的分類", Desc = "示範如何呈現Android內建的各種行視圖" }, new ChItem { type=typeof(ch0902Main), Title="例9-2 自訂視圖", Desc = "示範如何自訂行視圖" }, }});