Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 開發ListView適配器優化

Android 開發ListView適配器優化

編輯:關於Android編程

我們都知道Android中Adapter的作用就是ListView界面與數據之間的橋梁,當列表裡的每一項顯示到頁面時,都會調用Adapter的getView方法返回一個View。想過沒有? 在我們的列表有1000000項時會是什麼樣的?是不是會占用極大的系統資源?   看看下面的代碼: [java]  publicViewgetView(intposition,ViewconvertView,ViewGroupparent){   Viewitem=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);   returnitem;   }     大家不用我說也知道是怎麼樣了。如果超過1000000項時,後果不堪設想!您可千萬別這麼寫!   再來看看下面的代碼: [java]   publicViewgetView(intposition,ViewconvertView,ViewGroupparent){   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);   returnconvertView;   }     怎麼樣,上面的代碼是不是好了很多?系統將會減少創建很多View。性能得到了很大的提升。   當然還有更優化的代碼:   [java]   publicViewgetView(intposition,ViewconvertView,ViewGroupparent){   ViewHolderholder;   if(convertView==null){   convertView=mInflater.inflate(R.layout.list_item_icon_text,null);   holder=newViewHolder();   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);   returnconvertView;   }      staticclassViewHolder{   TextViewtext;   ImageViewicon;   }    
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved