本文轉載于:http://blog.csdn.net/vector_yi/article/details/23195411
本文僅介紹ListView相關的XML屬性及方法,
關于ListView在App中的用法:Android ListView 常見用法。
關于ListView中需要注意的地方,請移步: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.
三、嵌套類
[java] view plain copy

- class ListView.FixedViewInfo//用來在清單内展現一個固定位置視圖,如在清單頂端的header和在清單底端的footer
四、XML屬性
1.ListView的XML屬性
[java] view plain copy

- android:divider//在清單條目之間顯示的drawable或color
- android:dividerHeight//用來指定divider的高度
- android:entries//構成ListView的數組資源的引用。對于某些固定的資源,這個屬性提供了比在程式中添加資源更加簡便的方式
- android:footerDividersEnabled//當設為false時,ListView将不會在各個footer之間繪制divider.預設為true。
- android:headerDividersEnabled//當設為false時,ListView将不會在各個header之間繪制divider.預設為true。
-
android:listSelector //當設定為#00000000時,可以去掉listview item點選時的屎黃色
2.繼承自AbsListView的XML屬性
[java] view plain copy

- 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屬性
[java] view plain copy

- 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 方法
[java] view plain copy

- 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.響應事件方法
[java] view plain copy

- boolean OnKeyDown(int keyCode,KeyEvent event)//當按下鍵時響應
- boolean OnKeyMultiple(int keyCode,int repeatCount,KeyEvent event)//重複按下鍵時響應,repeatCount為按下次數
- boolean OnKeyUp(int keyCode,KeyEvent event)//當鍵被釋放時響應
3.get方法
[java] view plain copy

- 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方法
[java] view plain copy

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