1. 程式人生 > >Android學習--ListView

Android學習--ListView

cnblogs 分享 ada 它的 用法 adapter inflate table 文章

這篇文章用於總結自己這兩天學到的安卓的ListView和RecyclerView 的筆記,以及從我這個iOS開發者的角度去理解和學習這兩個控件,會比較一下他們個iOS中那些控件是一致的,可以用來對比的。

一:ListView 最簡單的用法

ListView最簡單的用法無非就是用它寫一個最基本的列表界面,展示的數據也就是我們最基本和常見的單條數據,一步一步的走下去:

ListView的創建,先說說它的布局的創建,直接代碼了,很簡單的一個ListView的寬、高和id:

技術分享

布局文件創建完之後就是我們的在MainActivity中的註冊了,一些自己理解的註釋都在下面,能幫助理解:

技術分享

看了上面的代碼和註釋,也會知道,我們的重點就在這個適配器,要是我們用系統的ArrayAdapter,我們再通過initFruits方法創建好數據源之後,用下面的方法:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, data);

就成功的構造出我們的適配器,這樣就是我們最簡單的ListView。

在iOS中,(如果你懂iOS)你肯定知道我們的TableView用的很多時候,需要你去自定義Cell,我們下面說的自定義安卓ListView的適配器就是我們iOS中說的自定義Cell,這個才是重點,相信你也知道。

二:自定義ListViwe適配器(自定義ListView界面)

我們在這裏自定義一個叫 FruitAdapter 的適配器,我們看一下這個適配器裏面的內容:

重點還是看看這個FruitAdapter適配器裏面的getView這個方法,這個方法的具體代碼如下,並且這個方法裏面已經是對ListView進行了優化的,看具體的註釋內容:

技術分享

說說自己理解的這個優化的過程:

一 : 我們利用View對contentView進行了緩存,判斷要是contentView為空,就利用LayoutInflater去加載布局,要是這個contentView不為空,我們就直接重用,其實這裏的重用我相信每個做iOS的都理解,和cell的重用是一個意思。

二: 我們再看看另一個ViewHolder,這個的作用就是對控件進行緩存,因為要是不緩存的話你每一次getView的時候獲取到的控件的時候都要進行一次 findViewById方法進行讀取,這樣我們利用這個ViewHolder,就不會每次通過findViewById方法來獲取控件。

經過上面兩步的優化,這個ListView的運行效率已經非常不錯了!

三: ListView的點擊事件

這個就像你用了TableView的時候,你寫了那麽多cell肯定是能點擊的,我們就說說ListView的點擊事件:

技術分享

我們這裏是簡單的寫了它的點擊事件,讓它彈出一個Toast, 當然這個Toast前面我們也是說過的,我們使用 setOnItemClickListener 為ListView 註冊一個監聽器,當用戶點擊了ListView當中的任何一個子項時候,就會回調onItemClick()方法,這個方法裏面的參數如下,你可以Command + (點擊OnItemClickListener)方法進去看看這個onItemClick裏面的參數,要讓你完全記住怎麽寫,我覺得挺難的,學會看父類的方法是不錯的一個方法:

技術分享

Android學習--ListView