溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ListView的屬性及方法詳解

發(fā)布時(shí)間:2020-07-05 16:09:54 來(lái)源:網(wǎng)絡(luò) 閱讀:440 作者:沒(méi)有水勒魚 欄目:移動(dòng)開發(fā)

近期在重新學(xué)習(xí)Android控件知識(shí),目前進(jìn)行到ListView,感覺(jué)這是一塊尤其難啃的硬骨頭:最為常用、用法較復(fù)雜、涉及的其他Android知識(shí)也較多。因此決定系統(tǒng)地好好復(fù)習(xí)一遍L(zhǎng)istView。

一、ListView類的繼承關(guān)系

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

ListView的直接子類有:ExpandableListView.

二、ListView概述

      ListView是一個(gè)用來(lái)縱向顯示條目的視圖,這些條目?jī)?nèi)容來(lái)自于與該ListView相關(guān)聯(lián)的ListAdapter.

三、嵌套類

class ListView.FixedViewInfo//用來(lái)在列表內(nèi)展現(xiàn)一個(gè)固定位置視圖,如在列表頂端的header和在列表底端的footer

四、XML屬性


    1.ListView的XML屬性

android:divider//在列表?xiàng)l目之間顯示的drawable或color  
  
android:dividerHeight//用來(lái)指定divider的高度  
  
android:entries//構(gòu)成ListView的數(shù)組資源的引用。對(duì)于某些固定的資源,這個(gè)屬性提供了比在程序中添加資源更加簡(jiǎn)便的方式  
  
android:footerDividersEnabled//當(dāng)設(shè)為false時(shí),ListView將不會(huì)在各個(gè)footer之間繪制divider.默認(rèn)為true。  
  
android:headerDividersEnabled//當(dāng)設(shè)為false時(shí),ListView將不會(huì)在各個(gè)header之間繪制divider.默認(rèn)為true。

2.繼承自AbsListView的XML屬性

android:cacheColorHint// 表明這個(gè)列表的背景始終以單一、固定的顏色繪制,可以優(yōu)化繪制過(guò)程。  
  
android:choiceMode//為視圖指定選擇的行為??蛇x的類型有:none、singleChoice、multipleChoice、multipleChoiceModal。  
  
android:drawSelectorOnTop// 若設(shè)為true,選擇器將繪制在選中條目的上層。默認(rèn)為false。  
  
android:fastScrollEnabled// 設(shè)置是否允許使用快速滾動(dòng)滑塊。  
  
android:listSelector// 設(shè)置選中項(xiàng)顯示的可繪制對(duì)象,可以是圖片或者顏色屬性。  
  
android:scrollingCache// 設(shè)置在滾動(dòng)時(shí)是否使用繪制緩存。若設(shè)為true,則將使?jié)L動(dòng)表現(xiàn)更快速,但會(huì)占用更內(nèi)存。默認(rèn)為true。  
  
  
android:smoothScrollbar// 為真時(shí),列表會(huì)使用更精確的基于條目在屏幕上的可見像素高度的計(jì)算方法。默認(rèn)該屬性為真,如果你的適配器需要繪制可變高的條目,他應(yīng)該設(shè)為假。當(dāng)該屬

性為真時(shí),你在適配器在顯示變高條目時(shí),滾動(dòng)條的把手會(huì)在滾動(dòng)的過(guò)程中改變大小。當(dāng)設(shè)為假時(shí),列表只使用適配器中的條目數(shù)和屏幕上的可見條目來(lái)決定滾動(dòng)條的屬性。  
  
android:stackFromBottom// 設(shè)置GridView和ListView是否將內(nèi)容從底部開始顯示。  
  
android:textFilterEnabled// 當(dāng)設(shè)為真時(shí),列表會(huì)將結(jié)果過(guò)濾為用戶類型。前提是這個(gè)列表的Adapter必須支持Filterable接口。  
  
android:transcriptMode//設(shè)置列表的transcriptMode.有如下選項(xiàng)可選:  
//(1)disabled          禁用TranscriptMode,也是默認(rèn)值;  
//(2)normal             當(dāng)新條目添加進(jìn)列表中并且已經(jīng)準(zhǔn)備好顯示的時(shí)候,列表會(huì)自動(dòng)滑動(dòng)到底部以顯示最新條目;  
//(3)alwaysScroll   列表會(huì)自動(dòng)滑動(dòng)到底部,無(wú)論新條目是否已經(jīng)準(zhǔn)備好顯示.

3.繼承自ViewGroup的XML屬性

android:addStatesFromChildren// 設(shè)置這個(gè)ViewGroup的drawable狀態(tài)是否包括子View的狀態(tài)。若設(shè)為true,當(dāng)子View如EditText或Button獲得焦點(diǎn)時(shí),整個(gè)ViewGroup也會(huì)獲得焦點(diǎn)。  
  
android:alwaysDrawnWithCache// 設(shè)置ViewGroup在繪制子View時(shí)是否一直使用繪圖緩存。默認(rèn)為true。  
  
android:animationCache// 設(shè)置布局在繪制動(dòng)畫效果時(shí)是否為其子View創(chuàng)建繪圖緩存。若設(shè)為true,將會(huì)消耗更多的內(nèi)存,要求持續(xù)時(shí)間更久的初始化過(guò)程,但表現(xiàn)更好。默認(rèn)為true。  
  
android:clipChildren// 設(shè)置子View是否受限于在自己的邊界內(nèi)繪制。若設(shè)為false,當(dāng)子View所占用的空間大于邊界時(shí)可以繪制在邊界外。默認(rèn)為true。  
  
android:clipToPadding//定義布局間是否有間距。默認(rèn)為true。  
  
android:descendantFocusability// 定義當(dāng)尋找一個(gè)焦點(diǎn)View的時(shí)候,ViewGroup與其子View之間的關(guān)系??蛇x項(xiàng)為:  
//(1)beforeDescendants       ViewGroup會(huì)比其子View更先獲得焦點(diǎn);  
//(2)afterDescendants           只有當(dāng)無(wú)子View想要獲取焦點(diǎn)時(shí),ViewGroup才會(huì)獲取焦點(diǎn);  
//(3)blockDescendants         ViewGroup會(huì)阻止子View獲取焦點(diǎn)  
  
android:layoutAnimation//定義當(dāng)ViewGroup第一次展開時(shí)的動(dòng)畫效果,也可人為地在第一次展開后調(diào)用。  
  
android:persistentDrawingCache// 定義繪圖緩存的持久性。有如下可選項(xiàng):  
//(1)none                    當(dāng)使用過(guò)后不保留繪圖緩存  
//(2)animation    在layout animation之后保留繪圖緩存  
//(3)scrolling    在Scroll操作后保留繪圖緩存  
//(4)all     always保留繪圖緩存

4.繼承自View的XML屬性

   太多了………………饒過(guò)我吧

五、常用public方法

      1.add/remove  方法

void addFooterView(View v)//增加一個(gè)固定在列表底部的View,參數(shù) v為欲添加的視圖  
  
void addFooterView(View v,Object data,boolean isSelectable)//增加一個(gè)固定在列表底部的View,參數(shù) v為欲添加的視圖,data為與View綁定的數(shù)據(jù),isSelectable設(shè)置是否可選  
  
  
void addHeaderView(View v)//增加一個(gè)固定在列表頂部的View,參數(shù) v為欲添加的視圖  
  
void addHeaderView(View v,Object data,boolean isSelectable)//增加一個(gè)固定在列表頂部的View,參數(shù) v為欲添加的視圖,data為與View綁定的數(shù)據(jù),isSelectable設(shè)置是否可選  
  
boolean removeFooterView(View v)//去除一個(gè)之前添加的FooterView,參數(shù)v為欲刪除的視圖,若成功刪除則返回true  
  
boolean removeHeaderView(View v)//去除一個(gè)之前添加的HeaderView,參數(shù)v為欲刪除的視圖,若成功刪除則返回true

 2.響應(yīng)事件方法

boolean OnKeyDown(int keyCode,KeyEvent event)//當(dāng)按下鍵時(shí)響應(yīng)  
  
boolean OnKeyMultiple(int keyCode,int repeatCount,KeyEvent event)//重復(fù)按下鍵時(shí)響應(yīng),repeatCount為按下次數(shù)  
  
boolean OnKeyUp(int keyCode,KeyEvent event)//當(dāng)鍵被釋放時(shí)響應(yīng)

3.get方法

ListAdapter getAdapter()//返回ListView正在使用的Adapter  
  
Drawable getDivider()//以Drawable形式返回divider  
  
int getDividerHeight()//這個(gè)……真不想解釋了  
  
int getFooterViewCount()//返回FooterView的個(gè)數(shù),若無(wú)返回0  
  
int getHeaderViewCount()//返回HeaderView的個(gè)數(shù),若無(wú)返回0  
  
boolean getItemsCanFocus()//返回是否有可獲得焦點(diǎn)的條目  
  
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)//為L(zhǎng)istView綁定Adapter  
  
void setCacheColorHint(int color)//參數(shù)為0時(shí),將CacheColor設(shè)為透明;參數(shù)非零時(shí),指定一種顏色作為L(zhǎng)istView的背景  
  
void setDivider(Drawable divider)//為L(zhǎng)istView中每個(gè)條目之間設(shè)定一個(gè)Divider  
  
void setDividerHeight(int height)//設(shè)定Divider的高度,單位為pixel  
  
void setFooterDividerEnabled(boolean footDividerEnabled)//設(shè)置FooterView之間的Dividers是否可用  
  
void setHeaderDividerEnabled(boolean headDividerEnabled)//設(shè)置HeaderView之間的Dividers是否可用  
  
void setItemsCanFocus(boolean itemsCanFocus)//設(shè)置是否包含可獲取焦點(diǎn)的Item  
  
void setOverscrollFooter(Drawable footer)//設(shè)置一個(gè)當(dāng)滾動(dòng)時(shí)或ListView未填滿屏幕時(shí)能顯示在ListView下方的Drawable  
  
void setOverscrollHeader(Drawable header)//設(shè)置一個(gè)當(dāng)滾動(dòng)時(shí)能顯示在ListView上方的Drawable  
  
void setRemoteViewAdapter(Intent intent)//為此AbsListView設(shè)置一個(gè)通過(guò)intent連接到RemoteViewsService而提供的遠(yuǎn)程視圖適配器  
  
void setSelection(int position)//設(shè)置被選中的條目。如果參數(shù)小于0,則position為0的條目將被選中  
  
void setSelectionAfterHeaderView()//選中headerView下方的第一條條目


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI