Android ListView元件的使用

2021-08-26 10:21:17 字數 3275 閱讀 3502

建立乙個名稱為hellolistview的android工程。

要使用listview,需要讓你的activity繼承於listactivity,這個和以前的有區別,以前的都是繼承activity,該listactivity繼承activity,擴充套件了很多常用的用於操作listview的方法,使用很方便。

現修改hellolistview類如下:

public class hellolistview extends listactivity //資料資料 private static final string countries=new string; }

執行程式效果如下:

看到了吧,我們的資料已經通過列表的形式顯示了出來!!! 這裡主要的是使用了乙個adapter—介面卡,你可以把他看成是listview的資料來源,listview要展示的資料都是已adapter的形勢傳遞給listview的。這個adapter很重要,android的用於傳給集合控制項(listview,spinner,gridview等)的資料都是以adapter的形勢,這樣的好處就是只要掌握了adapter,就可以很隨意的給這些集合控制傳遞資料,因為他們使用的都是adapter。介面卡介面卡關鍵就是適配,只需公布乙個adapter,就全搞定了。android已經給我們實現了一些常用的介面卡,如剛剛使用的陣列介面卡,還有簡單介面卡等,如果這些不能滿足,我們還可以通過自定義介面卡來實現自己的介面卡。其實一種介面卡就對應了乙個集合控制項中的乙個元素的布局展示。

上個例子我們並沒有使用在main.xml中定義乙個listview的形勢來布局listview,而是使用的listactivity中預設的listview來演示的。

下面就使用我們在main.xml中自定義的listview,這樣我們可以很方便的控制listview展示的布局,大小,背景色等屬性。當然上個例子中我們一樣可以通過getlistview獲取listview後使用它的方法來改變布局、大小和背景色等。

修改main.xml為:

<?xml version="1.0" encoding="utf-8"?>

這裡要注意的是我們設定listview的id為」@android:id/list」,意思是我們引用android已經為我們定義好的乙個id,名字是list,如果你不定義成這樣,這個listview是不能被listactivity識別的。然後就是新增了乙個藍色的背景,看看我們這個自定義的listview是否起了作用。

修改hellolistview類為:

public class hellolistview extends listactivity //資料資料 private static final string countries=new string; }

比上個例子只是多了setcontentview(r.layout.main);是為了讓android識別我們定義的listview。

執行效果圖:

背景已經變成了藍色,說明我們在xml中定義的listview起作用了。

前面的兩個例子都是展示一行文字,如果我們想**混排怎麼做呢,比如前面是文字,後面是。要實現這種功能就需要我們自定義adapter啦。

新建布局檔案item.xml,內容如下:

<?xml version="1.0" encoding="utf-8"?>

這裡主要定義乙個textview和乙個imageview,用於顯示列表每一行的文字和

修改hellolistview類如下:

public class hellolistview extends listactivity /** * 自定義檢視 * @author 飛雪無情 * */ private class textimageadapter extends baseadapter /** * 元素的個數 */ public int getcount() public object getitem(int position) public long getitemid(int position) //用以生成在listview中展示的乙個個元素view public view getview(int position, view convertview, viewgroup parent) itemviewcache cache=(itemviewcache)convertview.gettag(); //設定文字和,然後返回這個view,用於listview的item的展示 cache.mtextview.settext(texts[position]); cache.mimageview.setimageresource(images[position]); return convertview; } } //元素的緩衝類,用於優化listview private static class itemviewcache //展示的文字 private string texts=new string; //展示的 private int images=new int; }

這裡的主要地方是自定義了乙個adapter,我們只需要繼承baseadapter即可,baseadapter已經實現了adapter的大部分方法,我們繼承後只需要實現部分的方法即可。必須實現的就是getcount和getview方法,前乙個是返回listview中有多少個元素,後乙個是生成要展示的view。listview在每新增乙個view是就會呼叫adapter的getview方法,所以我們有必要對這個方法做優化,例子中就做了部分的優化,一般面試的時候會被問到listview優化,回答例子中的這些**就差不多了。

執行,我們會看到效果如圖:

如果我們要想單擊乙個listview的元素使其作出相應的響應怎麼辦呢?比如彈出什麼,開啟什麼,展示什麼等等,那麼我們只需要實現單擊事件的函式既可。

要實現listview的單擊事件有兩種方法,乙個是使用getlistview().setonclicklistener(l);設定,這個和平時我們用的控制項設定是一樣的,不做介紹,下面介紹第二個,就是重寫listactivity的onlistitemclick方法,其實這個的最後處理也是listview的setonclicklistener進行監聽呼叫的。

在hellolistview類中增加如下**:

@override protected void onlistitemclick(listview l, view v, int position, long id) { toast.maketext(this, "你單擊了"+texts[position], toast.length_short).show();

執行單擊其中的一行效果如下圖:

到這裡listview應該算是會使用了,起碼常用的功能會的,當然還有很多沒有說到的,比如listview的分割部分,headview和footview以及listview的分頁等等,這些就需要我們自己下去好好摸索了。

Android ListView優化總結

用多了listview之流 今天小朋友問這個問題時一時還無法回答全面 特此總結。listview多用於顯示具有相同格式之資料,包含的資料型別也極為豐富,聲音 文字等等。流程為,listview找到使用的介面卡,介面卡在逐個例項化,例項化後顯示,資料處理和adapter處理比較關鍵。就資料來說文字倒是...

Android ListView重新整理 載入

網上有現成的框架,pulltorefresh。不過專案裡不可能全部用到,顯得有些臃腫,在此用了xlistview,大同小異。無非就是重寫了listview中的ontouch方法,新增兩個控制項兒 headerview和footerview,新增乙個介面 重新整理和載入。這樣清晰了思路,再整理 就簡單...

Android ListView 問題彙總

listview 問題彙總 1.item 中的check view 選中混亂 listview 快取機制導致的。解決方案可以是 在adapter裡的getview方法裡先呼叫holder.cbiamge.setoncheckedchangelistener方法,再呼叫holder.cbiamge.s...