近期在重新學習Android控件知識,目前進行到ListView,感覺這是一塊尤其難啃的硬骨頭:最為常用、用法較復雜、涉及的其他Android知識也較多。因此決定系統(tǒng)地好好復習一遍ListView。
仁化ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
一、ListView類的繼承關(guān)系
可以看出,ListView并不直接繼承于View,而是直接繼承于抽象類AbsListView.
ListView的直接子類有:ExpandableListView.
二、ListView概述
ListView是一個用來縱向顯示條目的視圖,這些條目內(nèi)容來自于與該ListView相關(guān)聯(lián)的ListAdapter.
三、嵌套類
class ListView.FixedViewInfo//用來在列表內(nèi)展現(xiàn)一個固定位置視圖,如在列表頂端的header和在列表底端的footer
四、XML屬性
1.ListView的XML屬性
android:divider//在列表條目之間顯示的drawable或color android:dividerHeight//用來指定divider的高度 android:entries//構(gòu)成ListView的數(shù)組資源的引用。對于某些固定的資源,這個屬性提供了比在程序中添加資源更加簡便的方式 android:footerDividersEnabled//當設(shè)為false時,ListView將不會在各個footer之間繪制divider.默認為true。 android:headerDividersEnabled//當設(shè)為false時,ListView將不會在各個header之間繪制divider.默認為true。
2.繼承自AbsListView的XML屬性
android:cacheColorHint// 表明這個列表的背景始終以單一、固定的顏色繪制,可以優(yōu)化繪制過程。 android:choiceMode//為視圖指定選擇的行為。可選的類型有:none、singleChoice、multipleChoice、multipleChoiceModal。 android:drawSelectorOnTop// 若設(shè)為true,選擇器將繪制在選中條目的上層。默認為false。 android:fastScrollEnabled// 設(shè)置是否允許使用快速滾動滑塊。 android:listSelector// 設(shè)置選中項顯示的可繪制對象,可以是圖片或者顏色屬性。 android:scrollingCache// 設(shè)置在滾動時是否使用繪制緩存。若設(shè)為true,則將使?jié)L動表現(xiàn)更快速,但會占用更內(nèi)存。默認為true。 android:smoothScrollbar// 為真時,列表會使用更精確的基于條目在屏幕上的可見像素高度的計算方法。默認該屬性為真,如果你的適配器需要繪制可變高的條目,他應(yīng)該設(shè)為假。當該屬 性為真時,你在適配器在顯示變高條目時,滾動條的把手會在滾動的過程中改變大小。當設(shè)為假時,列表只使用適配器中的條目數(shù)和屏幕上的可見條目來決定滾動條的屬性。 android:stackFromBottom// 設(shè)置GridView和ListView是否將內(nèi)容從底部開始顯示。 android:textFilterEnabled// 當設(shè)為真時,列表會將結(jié)果過濾為用戶類型。前提是這個列表的Adapter必須支持Filterable接口。 android:transcriptMode//設(shè)置列表的transcriptMode.有如下選項可選: //(1)disabled 禁用TranscriptMode,也是默認值; //(2)normal 當新條目添加進列表中并且已經(jīng)準備好顯示的時候,列表會自動滑動到底部以顯示最新條目; //(3)alwaysScroll 列表會自動滑動到底部,無論新條目是否已經(jīng)準備好顯示.
3.繼承自ViewGroup的XML屬性
android:addStatesFromChildren// 設(shè)置這個ViewGroup的drawable狀態(tài)是否包括子View的狀態(tài)。若設(shè)為true,當子View如EditText或Button獲得焦點時,整個ViewGroup也會獲得焦點。 android:alwaysDrawnWithCache// 設(shè)置ViewGroup在繪制子View時是否一直使用繪圖緩存。默認為true。 android:animationCache// 設(shè)置布局在繪制動畫效果時是否為其子View創(chuàng)建繪圖緩存。若設(shè)為true,將會消耗更多的內(nèi)存,要求持續(xù)時間更久的初始化過程,但表現(xiàn)更好。默認為true。 android:clipChildren// 設(shè)置子View是否受限于在自己的邊界內(nèi)繪制。若設(shè)為false,當子View所占用的空間大于邊界時可以繪制在邊界外。默認為true。 android:clipToPadding//定義布局間是否有間距。默認為true。 android:descendantFocusability// 定義當尋找一個焦點View的時候,ViewGroup與其子View之間的關(guān)系??蛇x項為: //(1)beforeDescendants ViewGroup會比其子View更先獲得焦點; //(2)afterDescendants 只有當無子View想要獲取焦點時,ViewGroup才會獲取焦點; //(3)blockDescendants ViewGroup會阻止子View獲取焦點 android:layoutAnimation//定義當ViewGroup第一次展開時的動畫效果,也可人為地在第一次展開后調(diào)用。 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,參數(shù) v為欲添加的視圖 void addFooterView(View v,Object data,boolean isSelectable)//增加一個固定在列表底部的View,參數(shù) v為欲添加的視圖,data為與View綁定的數(shù)據(jù),isSelectable設(shè)置是否可選 void addHeaderView(View v)//增加一個固定在列表頂部的View,參數(shù) v為欲添加的視圖 void addHeaderView(View v,Object data,boolean isSelectable)//增加一個固定在列表頂部的View,參數(shù) v為欲添加的視圖,data為與View綁定的數(shù)據(jù),isSelectable設(shè)置是否可選 boolean removeFooterView(View v)//去除一個之前添加的FooterView,參數(shù)v為欲刪除的視圖,若成功刪除則返回true boolean removeHeaderView(View v)//去除一個之前添加的HeaderView,參數(shù)v為欲刪除的視圖,若成功刪除則返回true
2.響應(yīng)事件方法
boolean OnKeyDown(int keyCode,KeyEvent event)//當按下鍵時響應(yīng) boolean OnKeyMultiple(int keyCode,int repeatCount,KeyEvent event)//重復按下鍵時響應(yīng),repeatCount為按下次數(shù) boolean OnKeyUp(int keyCode,KeyEvent event)//當鍵被釋放時響應(yīng)
3.get方法
ListAdapter getAdapter()//返回ListView正在使用的Adapter Drawable getDivider()//以Drawable形式返回divider int getDividerHeight()//這個……真不想解釋了 int getFooterViewCount()//返回FooterView的個數(shù),若無返回0 int getHeaderViewCount()//返回HeaderView的個數(shù),若無返回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)//參數(shù)為0時,將CacheColor設(shè)為透明;參數(shù)非零時,指定一種顏色作為ListView的背景 void setDivider(Drawable divider)//為ListView中每個條目之間設(shè)定一個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è)置是否包含可獲取焦點的Item void setOverscrollFooter(Drawable footer)//設(shè)置一個當滾動時或ListView未填滿屏幕時能顯示在ListView下方的Drawable void setOverscrollHeader(Drawable header)//設(shè)置一個當滾動時能顯示在ListView上方的Drawable void setRemoteViewAdapter(Intent intent)//為此AbsListView設(shè)置一個通過intent連接到RemoteViewsService而提供的遠程視圖適配器 void setSelection(int position)//設(shè)置被選中的條目。如果參數(shù)小于0,則position為0的條目將被選中 void setSelectionAfterHeaderView()//選中headerView下方的第一條條目