1. 程式人生 > >ListView的屬性及方法詳解

ListView的屬性及方法詳解

近期在重新學習Android控制元件知識,目前進行到ListView,感覺這是一塊尤其難啃的硬骨頭:最為常用、用法較複雜、涉及的其他Android知識也較多。因此決定系統地好好複習一遍ListView。其中涉及到的其他知識點將在後期以連結的形式不斷進行更新。

本文僅介紹ListView相關的XML屬性及方法,

一、ListView類的繼承關係

可以看出,ListView並不直接繼承於View,而是直接繼承於

ListView的直接子類有:ExpandableListView.

二、ListView概述

      ListView是一個用來縱向顯示條目的檢視,這些條目內容來自於與該ListView相關聯的ListAdapter.

三、巢狀類

class ListView.FixedViewInfo//用來在列表內展現一個固定位置檢視,如在列表頂端的header和在列表底端的footer

四、XML屬性

    1.ListView的XML屬性

android:divider//在列表條目之間顯示的drawable或color

android:dividerHeight//用來指定divider的高度

android:entries//構成ListView的陣列資源的引用。對於某些固定的資源,這個屬性提供了比在程式中新增資源更加簡便的方式

android:footerDividersEnabled//當設為false時,ListView將不會在各個footer之間繪製divider.預設為true。

android:headerDividersEnabled//當設為false時,ListView將不會在各個header之間繪製divider.預設為true。


  2.繼承自AbsListView的XML屬性

android:cacheColorHint// 表明這個列表的背景始終以單一、固定的顏色繪製,可以優化繪製過程。

android:choiceMode//為檢視指定選擇的行為。可選的型別有:none、singleChoice、multipleChoice、multipleChoiceModal。

android:drawSelectorOnTop// 若設為true,選擇器將繪製在選中條目的上層。預設為false。

android:fastScrollEnabled// 設定是否允許使用快速滾動滑塊。

android:listSelector// 設定選中項顯示的可繪製物件,可以是圖片或者顏色屬性。

android:scrollingCache// 設定在滾動時是否使用繪製快取。若設為true,則將使滾動表現更快速,但會佔用更記憶體。預設為true。


android:smoothScrollbar// 為真時,列表會使用更精確的基於條目在螢幕上的可見畫素高度的計算方法。預設該屬性為真,如果你的介面卡需要繪製可變高的條目,他應該設為假。當該屬性為真時,你在介面卡在顯示變高條目時,滾動條的把手會在滾動的過程中改變大小。當設為假時,列表只使用介面卡中的條目數和螢幕上的可見條目來決定滾動條的屬性。

android:stackFromBottom// 設定GridView和ListView是否將內容從底部開始顯示。

android:textFilterEnabled// 當設為真時,列表會將結果過濾為使用者型別。前提是這個列表的Adapter必須支援Filterable介面。

android:transcriptMode//設定列表的transcriptMode.有如下選項可選:
//(1)disabled          禁用TranscriptMode,也是預設值;
//(2)normal             當新條目新增進列表中並且已經準備好顯示的時候,列表會自動滑動到底部以顯示最新條目;
//(3)alwaysScroll   列表會自動滑動到底部,無論新條目是否已經準備好顯示.

    3.繼承自ViewGroup的XML屬性
android:addStatesFromChildren// 設定這個ViewGroup的drawable狀態是否包括子View的狀態。若設為true,當子View如EditText或Button獲得焦點時,整個ViewGroup也會獲得焦點。

android:alwaysDrawnWithCache// 設定ViewGroup在繪製子View時是否一直使用繪圖快取。預設為true。

android:animationCache// 設定佈局在繪製動畫效果時是否為其子View建立繪圖快取。若設為true,將會消耗更多的記憶體,要求持續時間更久的初始化過程,但表現更好。預設為true。

android:clipChildren// 設定子View是否受限於在自己的邊界內繪製。若設為false,當子View所佔用的空間大於邊界時可以繪製在邊界外。預設為true。

android:clipToPadding//定義佈局間是否有間距。預設為true。

android:descendantFocusability// 定義當尋找一個焦點View的時候,ViewGroup與其子View之間的關係。可選項為:
//(1)beforeDescendants       ViewGroup會比其子View更先獲得焦點;
//(2)afterDescendants           只有當無子View想要獲取焦點時,ViewGroup才會獲取焦點;
//(3)blockDescendants         ViewGroup會阻止子View獲取焦點

android:layoutAnimation//定義當ViewGroup第一次展開時的動畫效果,也可人為地在第一次展開後呼叫。

android:persistentDrawingCache// 定義繪圖快取的永續性。有如下可選項:
//(1)none                    當使用過後不保留繪圖快取
//(2)animation    在layout animation之後保留繪圖快取
//(3)scrolling    在Scroll操作後保留繪圖快取
//(4)all     always保留繪圖快取

	

   4.繼承自View的XML屬性

   太多了………………饒過我吧

五、常用public方法

      1.add/remove  方法

void addFooterView(View v)//增加一個固定在列表底部的View,引數 v為欲新增的檢視

void addFooterView(View v,Object data,boolean isSelectable)//增加一個固定在列表底部的View,引數 v為欲新增的檢視,data為與View繫結的資料,isSelectable設定是否可選


void addHeaderView(View v)//增加一個固定在列表頂部的View,引數 v為欲新增的檢視

void addHeaderView(View v,Object data,boolean isSelectable)//增加一個固定在列表頂部的View,引數 v為欲新增的檢視,data為與View繫結的資料,isSelectable設定是否可選

boolean removeFooterView(View v)//去除一個之前新增的FooterView,引數v為欲刪除的檢視,若成功刪除則返回true

boolean removeHeaderView(View v)//去除一個之前新增的HeaderView,引數v為欲刪除的檢視,若成功刪除則返回true

      2.響應事件方法

boolean OnKeyDown(int keyCode,KeyEvent event)//當按下鍵時響應

boolean OnKeyMultiple(int keyCode,int repeatCount,KeyEvent event)//重複按下鍵時響應,repeatCount為按下次數

boolean OnKeyUp(int keyCode,KeyEvent event)//當鍵被釋放時響應

        3.get方法

ListAdapter getAdapter()//返回ListView正在使用的Adapter

Drawable getDivider()//以Drawable形式返回divider

int getDividerHeight()//這個……真不想解釋了

int getFooterViewCount()//返回FooterView的個數,若無返回0

int getHeaderViewCount()//返回HeaderView的個數,若無返回0

boolean getItemsCanFocus()//返回是否有可獲得焦點的條目

int getMaxScrollAmount()//The maximum amount a list view will scroll in response to an arrow event.(求翻譯)

Drawable getOverscrollFooter()//返回繪製在所有條目之下的drawable

Drawable getOverscrollHeader()//返回繪製在所有條目之上的drawable


     4.set方法

void setAdapter(ListAdapter adapter)//為ListView繫結Adapter

void setCacheColorHint(int color)//引數為0時,將CacheColor設為透明;引數非零時,指定一種顏色作為ListView的背景

void setDivider(Drawable divider)//為ListView中每個條目之間設定一個Divider

void setDividerHeight(int height)//設定Divider的高度,單位為pixel

void setFooterDividerEnabled(boolean footDividerEnabled)//設定FooterView之間的Dividers是否可用

void setHeaderDividerEnabled(boolean headDividerEnabled)//設定HeaderView之間的Dividers是否可用

void setItemsCanFocus(boolean itemsCanFocus)//設定是否包含可獲取焦點的Item

void setOverscrollFooter(Drawable footer)//設定一個當滾動時或ListView未填滿螢幕時能顯示在ListView下方的Drawable

void setOverscrollHeader(Drawable header)//設定一個當滾動時能顯示在ListView上方的Drawable

void setRemoteViewAdapter(Intent intent)//為此AbsListView設定一個通過intent連線到RemoteViewsService而提供的遠端檢視介面卡

void setSelection(int position)//設定被選中的條目。如果引數小於0,則position為0的條目將被選中

void setSelectionAfterHeaderView()//選中headerView下方的第一條條目