天天看點

listview的又一次認識

總結先從listview開始吧,覺的listview是大多數人進入android的第一課,如果你也有心,我們可以一起探讨;

- ### 繼承的關系可以打開以下連結看看

https://developer.android.com/reference/android/widget/ListView.html

沒有耐心的人還是直接看下面吧

- ### 屬性介紹

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: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   清單會自動滑動到底部,無論新條目是否已經準備好顯示.  
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保留繪圖緩存  
           
  • 重點掌握屬性

    • android:divider
    • android:dividerHeight
    • android:listSelector
    • android:scrollbars
    • android:cacheColorHint
    • 具體是什麼意思,幹嘛的你可以在上面找,不是我不寫,我是故意的!
  • listView的方法介紹

    “`

    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

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

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

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

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

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

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

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

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

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

int getMaxScrollAmount()//清單視圖将響應于箭頭事件滾動的最大值

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

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

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

“`

- #### 常用方法介紹

- void addFooterView(View v)

- void addHeaderView(View v)

- void setEmptyView(View emptyView)

- 以上三個是RecyclerView所沒有的,我們之後會講到

- boolean removeFooterView(View v)

- boolean removeHeaderView(View v)

- void setAdapter(ListAdapter adapter)

- void setCacheColorHint(int color)

- void setDivider(Drawable divider)

- void setDividerHeight(int height)

  • ### 最後一點強調一下

    #### 既然學了程式設計就要有耐心

    記住上面的話我們就可以一本正經的扯淡了,以上就是listview的相關屬性介紹吧,不想篇幅太長,下篇繼續list的adapter的講解,為了講解,每個我都做了demo,我會依次發到github,想學listView或者RecyclerView或者想從listView轉RecyclerView的,可以支援一下

繼續閱讀