Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 【Anroid】第9章 列表視圖(1)--ListView相關類及其適配器,anroid--listview

【Anroid】第9章 列表視圖(1)--ListView相關類及其適配器,anroid--listview

編輯:關於android開發

【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 = "演示如何自定義行視圖" },
    }
});

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved