實例化一個ListView奥洼,需要給這個listview設定一個適配器(adapter)才能夠使其正常工作晚胡。如果我們重寫了一個適配器的話,我們會發(fā)現(xiàn)我們需要重載四個方法:如下圖
1.getCount()函數骡尽,返回的是我們調用的這個listview的長度
listview開始繪制的時候擅编,會調用該方法,來一行一行的繪制listview谭贪。如果你的getCount()返回值是0的話锦担,列表一行都不會顯示,如果返回1套媚,就只顯示一行磁椒。返回幾則顯示幾行。
浆熔?如果要顯示的item很多怎么破蘸拔?我們也不可能會生成成千上萬的item吧调窍?
Android早已經緩存了這些視圖,大家可以看下下面這個截圖來理解下:
原理剖析:
1.如果有幾千幾萬甚至更多的選項(item)時,其中只有可見的如圖中七個item在內存中存放著宝剖,而其他的都在recycler中
2.ListView先請求一個type1視圖(getView)然后請求其他可見的項目万细。convertView在getView中是空(null)的
3.當item1滾出屏幕纸泄,并且一個新的項目從屏幕低端上來時,ListView再請求一個type1視圖雪营。convertView此時不是空值了献起,它的值是item1洋访。你只需設定新的數據然后返回convertView,不必重新創(chuàng)建一個視圖
自己重寫一個adapter適配器(重點在于getview()函數):