編輯:關於android開發
分類: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 = "演示如何自定義行視圖" }, } });
在Android應用程序使用YouTube API來嵌入視頻,在Android版YouTube播放器API使您可以將視頻播放功能到你的Android應用程序。該API允許
android app進行代碼混淆實例詳解 android app進行代碼混淆實例詳解 接到一個新的
android 史上最簡單易懂的跨進程通訊(Messenger)!,androidmessenger不需要AIDL也不需要復雜的ContentProvider,也不需要S
Android窗口機制分析與UI管理系統,androidui類圖關系 在看Android的窗口機制之前,先看看其主要的類圖關系以及層級之間的依賴與調用關系
Android中使用GridView和ImageViewSwitcher