Android ListView適配器(Adapter)優(yōu)化方法詳解
Android ListView的優(yōu)化,在做Android項目的時候,在用到ListView 界面及數(shù)據(jù)顯示,這個時候如果資源過大,對項目來說,用戶體驗肯定是不好的,這里就對如何優(yōu)化做了詳細(xì)介紹:
Adapter的作用就是ListView界面與數(shù)據(jù)之間的橋梁,當(dāng)列表里的每一項顯示到頁面時,都會調(diào)用Adapter的getView方法返回一個View。想過沒有? 在我們的列表有1000000項時會是什么樣的?是不是會占用極大的系統(tǒng)資源?
ListView的Adapter的作用如下圖所示:
先看看下面的代碼:
public View getView(int position, View convertView, ViewGroup parent) { View item = mInflater.inflate(R.layout.list_item_icon_text, null); ((TextView) item.findViewById(R.id.text)).setText(DATA[position]); ((ImageView) item.findViewById(R.id.icon)).setImageBitmap( (position & 1) == 1 ? mIcon1 : mIcon2); return item; }
怎么樣?如果超過1000000項時,后果不堪設(shè)想!您可千萬別這么寫!
我們再來看看下面的代碼:
public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = mInflater.inflate(R.layout.item, null); } ((TextView) convertView.findViewById(R.id.text)).setText(DATA[position]); ((ImageView) convertView.findViewById(R.id.icon)).setImageBitmap( (position & 1) == 1 ? mIcon1 : mIcon2); return convertView; }
怎么樣,上面的代碼是不是好了很多?系統(tǒng)將會減少創(chuàng)建很多View。性能得到了很大的提升。
還有沒有優(yōu)化的方法呢? 答案是肯定的:
public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.list_item_icon_text, null); holder = new ViewHolder(); holder.text = (TextView) convertView.findViewById(R.id.text); holder.icon = (ImageView) convertView.findViewById(R.id.icon); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.text.setText(DATA[position]); holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2); return convertView; } static class ViewHolder { TextView text; ImageView icon; }
怎么樣?會不會又給您的系統(tǒng)帶來很大的提升呢?看看下面三種方式的性能對比圖您就知道了!
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
- 舉例講解Android應(yīng)用中SimpleAdapter簡單適配器的使用
- Android中 自定義數(shù)據(jù)綁定適配器BaseAdapter的方法
- Kotlin編寫Android適配器Adapter
- Android SimpleAdapter適配器使用詳解
- Android之自定義實現(xiàn)BaseAdapter(通用適配器一)
- Android ListView和Adapter數(shù)據(jù)適配器的簡單介紹
- Android控件系列之相冊Gallery&Adapter適配器入門&控件縮放動畫入門
- Android設(shè)計模式之適配器(Adapter)模式
- Android適配器(Adapter)的概念與自定義
相關(guān)文章
Android實現(xiàn)文字和圖片混排(文字環(huán)繞圖片)效果
這篇文章主要介紹了Android實現(xiàn)文字和圖片混排的方法,實例分析了文字環(huán)繞圖片效果的具體功能顯示及頁面布局實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10Android編程實現(xiàn)點(diǎn)擊EditText之外的控件隱藏軟鍵盤功能
這篇文章主要介紹了Android編程實現(xiàn)點(diǎn)擊EditText之外的控件隱藏軟鍵盤功能,涉及Android控件的功能、屬性及相關(guān)操作技巧,需要的朋友可以參考下2017-06-06Android實現(xiàn)登錄郵箱的自動補(bǔ)全功能
這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)登錄郵箱的自動補(bǔ)全功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-04-04Android 實現(xiàn)通知消息水平播放、無限循環(huán)效果
Android 實現(xiàn)通知消息水平播放、無限循環(huán)效果非常常見,今天小編給大家分享實例代碼感興趣的朋友參考下吧2017-08-08淺析Android企業(yè)級開發(fā)數(shù)據(jù)綁定技術(shù)
這篇文章通過代碼實例分析了Android企業(yè)級開發(fā)數(shù)據(jù)綁定技術(shù)的應(yīng)用以及相關(guān)的原理知識,跟著小編一起學(xué)習(xí)參考下吧。2017-12-12android高仿微信表情輸入與鍵盤輸入代碼(詳細(xì)實現(xiàn)分析)
表情與鍵盤的切換輸入大部分IM都會需要到,本篇文章主要介紹了android高仿微信表情輸入與鍵盤輸入,具有一定的參考價值,有興趣的可以了解一下。2016-12-12