ListView 优化
ListView 優(yōu)化
Listview 優(yōu)化一
viewHolder 的使用和convertView的復用
viewHolder相當于一個水果籃子,我們把要吃的水果,洗好先放到籃子了,我們要吃的時候直接吃就行了,不需要再一個一個拿去洗了,方便,省力。
首先講下ListView的原理:ListView中的每一個Item顯示都需要Adapter調(diào)用一次getView()的方法,這個方法會傳入一個convertView的參數(shù),這個方法返回的View就是這個Item顯示的View。如果當Item的數(shù)量足夠大,再為每一個Item都創(chuàng)建一個View對象,必將占用很多內(nèi)存空間,即創(chuàng)建View對象(mInflater.inflate(R.layout.lv_item, null);從xml中生成View,這是屬于IO操作)是耗時操作,所以必將影響性能。Android提供了一個叫做Recycler(反復循環(huán))的構(gòu)件,就是當ListView的Item從滾出屏幕視角之外,對應(yīng)Item的View會被緩存到Recycler中,相應(yīng)的會從生成一個Item,而此時調(diào)用的getView中的convertView參數(shù)就是滾出屏幕的緩存Item的View,所以說如果能重用這個convertView,就會大大改善性能。
簡單列表的復用
其中g(shù)etView是渲染每個Item時進行回調(diào)生成View的,方法參數(shù)convertView就是ListView傳回可以復用的View,當其不為null時,無需重新創(chuàng)建View,可以直接使用convertView,進行數(shù)據(jù)渲染即可。其原理是當?shù)谝淮握{(diào)用時ListView直接將生成的View緩存到一個ArrayList中,當需要時直接從ArrayList中取出即可:
復雜列表復用
當列表中的item需要不同Item的時候
總結(jié)
以上是生活随笔為你收集整理的ListView 优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。