標籤:getview get 資料來源 font adapter list cell 使用 自訂
這篇文章用於總結自己這兩天學到的安卓的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