【正文】
内容簡介:
• 1、基本的xml配置
• 2、listactivity
• 3、單選和多選模式
• 4、listview實作圖文清單
• 5、listview重新整理分頁
一、基本的 xml配置:
android:cachecolorhint="#00000000" //設定拖動背景色為透明
android:dividerheight="30px" //listview item之間的高度(即分格條的高度)
android:divider="@drawable/ic_launcher" //設定listview item之間背景或者說是顔色
android:fadingedge="vertical" //上邊和下邊有黑色的陰影,值為none的話就沒有陰影
android:drawselectorontop="true" 點選某條記錄不放,顔色會在記錄的前面,成為前景色,記錄上的文字被遮住,是以點選文字不放,文字就看不到(預設為false)
android:scrollbars="horizontal|none" //隻有值為horizontal|vertical的時候(預設也是這個值),才會顯示滾動條,并且會自動影藏和顯示
android:fastscrollenabled="true" //快速滾動效果,配置這個屬性,在快速滾動的時候旁邊會出現一個小方塊,進行快速滾動,自動隐藏和顯示(如果沒有出現,是因為listview item數目不夠多)
android:listselector="@color/pink" //istviewl item選中時的顔色
android:entries="@array/citys" //設定清單填充的内容
在listview中加載本地資料,有兩種方式,下面舉例說明:(當然了,在這之前我們需要在布局檔案activity_main.xml中添加一個listview控件)
【方式一】:在xml檔案中添加靜态資料的方式:
在res/values/string.xml檔案中, 添加一組靜态資料,作為清單中将要填充的内容,代碼如下


緊接着,在布局檔案的listview控件中,添加如下屬性:
然後設定一下listview的其他屬性。這樣,運作後,就可以顯示一個簡單的清單了。
【方式二】在java代碼中來添加資料:


事件處理的監聽器為:onitemclicklistener。
方法舉例如下:(将目前點選的那個item的文本以吐司的方式顯示出來)


上面的第12、13行代碼也可以替換成下面的這行代碼:(因為通過adapter的getitem方法也可以擷取對應item,傳回值類型是我們之前定義好的string類型)
運作效果如下:
二、listactivity
(1)如果程式的視窗僅僅隻需要顯示一個清單,則可以讓這個activity直接繼承listactivity來實作,此時已經包含了一個listview元件,不用再重新寫布局檔案了。
代碼舉例如下:


運作後,也能顯示出一個listview。
(2)事件處理
事件處理的方法為:onlistitemclick();
listactiviy這個類中已經包含了事件處理的監聽器,是以我們隻需要複寫其中的onlistitemclick()即可:
(3)listactivity的布局預設是由一個單一的在螢幕中心的全螢幕的清單,用setcontentview()在在oncreate()設定您自己的自定義螢幕布局視圖布局,必須包含一個清單視圖的對象id:"@android:id/list“
(4)自定義視圖可以包含任何類型,顯示另一個視圖對象清單視圖是空的,必須包含一個視圖對象的id:android:id/empty。
三、單選和多選模式:
單選模式:
多選模式:
五、listview實作圖文清單:
1、使用simpleadapter建立複雜的清單項:
使用到的方法是:
第2個參數data:每個item就是一個map,多個map放在一個list當中。這個list是一個集合對象。,每一個map中應該包含所有在from參數中指定的鍵;(例如,data裡放入圖檔和文字)
第3個參數resource:一個自定義清單項的布局檔案的資源id。布局檔案将至少應包含在to中定義了的id。(通俗來說,就是先定義一個item的模闆)
第4個參數from:一個将被添加到map映射上的鍵名
第5個參數to:将綁定資料的視圖的id,跟from參數對應,這些應該全是textview。
舉例說明,完整版代碼如下:
布局檔案activity3.xml的代碼:


下面建立一個布局檔案activity_main_item.xml,作為一個item的模闆:


這個布局檔案展示的效果如下:
然後,mainactivity.java的代碼如下:


運作後,效果如下:
【工程檔案】
密碼:q63j
如果item比較多的話,可以用for循環來做
2、自定義擴充卡baseadapter實作更靈活的清單:
之前使用simpleadapter,它的局限性在于,simpleadapter已經将内部的結構(即每個item)封裝好了,然後按照這種格式疊加起來,無法進行額外的處理。是以,這時候可以使用baseadapter實作更靈活的清單。
(1)方法:實際上,就是自己寫一個myadapter類,讓它繼承baseadapter。需要複寫該類的五個方法:
public int getcount()
public object getitem(int position)
public long getitemid(int position)
public view getview(int position, view convertview, viewgroup parent)
最重要的是第四個方法。
(2)listview 的優化:
重複使用convertview
使用viewholder提高在容器中查找元件的效率
完整版代碼如下:
activity_main.xml:


注:為了優化,第13行的代碼一定要寫match_parent,而不是wrap_content,解釋略。
activity_main_item.xml:


mainactivity.java:

