天天看點

Android UI元件----ListView清單控件詳解

【正文】

内容簡介:

• 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檔案中, 添加一組靜态資料,作為清單中将要填充的内容,代碼如下

Android UI元件----ListView清單控件詳解
Android UI元件----ListView清單控件詳解

緊接着,在布局檔案的listview控件中,添加如下屬性:

然後設定一下listview的其他屬性。這樣,運作後,就可以顯示一個簡單的清單了。

【方式二】在java代碼中來添加資料:

Android UI元件----ListView清單控件詳解
Android UI元件----ListView清單控件詳解

事件處理的監聽器為:onitemclicklistener。

方法舉例如下:(将目前點選的那個item的文本以吐司的方式顯示出來)

Android UI元件----ListView清單控件詳解
Android UI元件----ListView清單控件詳解

上面的第12、13行代碼也可以替換成下面的這行代碼:(因為通過adapter的getitem方法也可以擷取對應item,傳回值類型是我們之前定義好的string類型)

運作效果如下:

Android UI元件----ListView清單控件詳解

二、listactivity

(1)如果程式的視窗僅僅隻需要顯示一個清單,則可以讓這個activity直接繼承listactivity來實作,此時已經包含了一個listview元件,不用再重新寫布局檔案了。

代碼舉例如下:

Android UI元件----ListView清單控件詳解
Android UI元件----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的代碼:

Android UI元件----ListView清單控件詳解
Android UI元件----ListView清單控件詳解

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

Android UI元件----ListView清單控件詳解
Android UI元件----ListView清單控件詳解

這個布局檔案展示的效果如下:

Android UI元件----ListView清單控件詳解

然後,mainactivity.java的代碼如下:

Android UI元件----ListView清單控件詳解
Android UI元件----ListView清單控件詳解

運作後,效果如下:

Android UI元件----ListView清單控件詳解

【工程檔案】

密碼: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:

Android UI元件----ListView清單控件詳解
Android UI元件----ListView清單控件詳解

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

activity_main_item.xml:

Android UI元件----ListView清單控件詳解
Android UI元件----ListView清單控件詳解

mainactivity.java:

Android UI元件----ListView清單控件詳解
Android UI元件----ListView清單控件詳解
Android UI元件----ListView清單控件詳解

繼續閱讀