ListView的屬性及方法詳解

近期在重新學習Android控件知識,目前進行到ListView,感覺這是一塊尤其難啃的硬骨頭:最爲常用、用法較複雜、涉及的其他Android知識也較多。因此決定系統地好好複習一遍ListView。

一、ListView類的繼承關係

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.AdapterView<T extends android.widget.Adapter>
         ↳ android.widget.AbsListView
           ↳ android.widget.ListView

可以看出,ListView並不直接繼承於View,而是直接繼承於抽象類AbsListView.

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下方的第一條條目  


發佈了135 篇原創文章 · 獲贊 56 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章