listview 优 化

 
001 Adapter是listview和数据源间的中间人。
002   
003 当每条数据进入可见区域时,adapter的getview()会被调用,返回代表具体数据的视图。触摸滚动时,频繁调用。支持成百上千条数据。
004   
005 下面为显示每条数据的xml文件:
006   
007 <LinearLayout
008 xmlns:android="http://schemas.android.com/apk/res/android"
009 android:orientation="horizontal">
010 <ImageView android:id="@+id/icon"
011 android:layout_width="48dip"
012 android:layout_height="48dip" />
013 <TextView android:id="@+id/text"
014 android:layout_gravity="center_vertical"
015 android:layout_width="0dip"
016 android:layout_weight="1.0"
017 android:layout_height="wrap_content" />
018 </LinearLayout>
019   
020 1。最简单的方法,最慢且最不实用
021   
022 public View getView(int pos, View convertView,
023 ViewGroup parent){
024 View item = mInflater.inflate(R.layout.list_item, null);
025 ((TextView) item.findViewById(R.id.text)).
026 setText(DATA[pos]);
027 ((ImageView) item.findViewButId(R.id.icon)).
028 setImageBitmap((pos & 1) == 1 ? mIcon1 : mIcon2);
029 return item;
030 }
031   
032 2。利用convertview回收视图,效率提高200%。
033   
034 public View getView(int pos, View convertView,
035 ViewGroup parent){
036 if (convertView == null) {
037 convertView = mInflater.inflate(
038 R.layout.list_item, null);
039 }
040 ((TextView) convertView.findViewById(R.id.text)).
041 setText(DATA[pos]);
042 ((ImageView) convertView.findViewButId(R.id.icon)).
043 setImageBitmap((pos & 1) == 1 ? mIcon1 : mIcon2);
044 return convertView;
045 }
046   
047 3。利用viewholder模式,效率在提高50%
048   
049 static class ViewHolder {
050 TextView text;
051 ImageView icon;
052 }
053   
054    
055   
056 public View getView(int pos, View convertView, ViewGroup parent){
057 ViewHolder holder;
058 if (convertView == null) {
059 convertView = mInflater.inflate(R.layout.list_item, null);
060 holder = new ViewHolder();
061 holder.text = (TextView) convertView.findViewById(
062 R.id.text));
063 holder.icon = (ImageView) convertView.findViewButId(
064 R.id.icon));
065 convertView.setTag(holder);
066 } else {
067 holder = (ViewHolder) convertView.getTag();
068 }
069 holder.text.setText(DATA[pos]);
070 holder.icon.setImageBitmap((pos & 1) == 1 ? mIcon1 : mIcon2);
071 return convertView;
072 }
073   
074 adapter更新效率比较:
075   
076 1的更新不到10 frames/second
077   
078 2的更新接近30 frames/second
079   
080 3的更新接近40 frames/second
081   
082 背景和图像
083   
084 视图背景图像总会填充整个视图区域
085   
086 1。图像尺寸不合适会导致自动缩放
087   
088 2。避免实时缩放
089   
090 3。最好预先缩放到视图大小
091   
092 originalImage = Bitmap.createScaledBitmap(
093 originalImage, //
0
0
 
 

参考知识库

猜你在找
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
快速回复 TOP
    个人资料

    lili1985516
    • 访问:225088次
    • 积分:2923
    • 等级:
    • 排名:第7744名
    • 原创:84篇
    • 转载:47篇
    • 译文:0篇
    • 评论:40条
    文章分类
  • android(86)
    文章存档
  • 2014年05月(2)
  • 2013年06月(2)
  • 2013年03月(1)
  • 2013年02月(1)
  • 2013年01月(4)
  • 2012年12月(2)
  • 2012年11月(1)
  • 2012年10月(5)
  • 2012年09月(12)
  • 2012年08月(4)
  • 2012年07月(10)
  • 2012年06月(1)
  • 2012年05月(2)
  • 2012年04月(2)
  • 2012年03月(5)
  • 2012年02月(4)
  • 2012年01月(2)
  • 2011年12月(4)
  • 2011年11月(7)
  • 2011年10月(7)
  • 2011年09月(1)
  • 2011年08月(5)
  • 2011年06月(7)
  • 2011年05月(1)
  • 2011年04月(1)
  • 2011年03月(6)
  • 2011年02月(8)
  • 2011年01月(8)
  • 2010年12月(5)
  • 2010年11月(10)
  • 2010年10月(2)
    阅读排行
  • 全国城市数组(28728)
  • android的无标题dialog以及dialog样式的窗体(15821)
  • 短信中心号(13450)
  • ZXing使用(二)(7892)
  • ANDROID 获得地理位置(6135)
  • ANDROID StrictMode 使用(5889)
  • android 读、写、删短信息(5606)
  • android读写串口(5028)
  • ZXING开发(一)(4661)
  • android 修改APK(4253)
    评论排行
  • android读写串口(7)
  • android的无标题dialog以及dialog样式的窗体(3)
  • ZXING开发(一)(3)
  • quickAction(3)
  • android自动接听和挂断电话(3)
  • ANDROID StrictMode 使用(3)
  • android 电话接通时震动(3)
  • App应用之提交到各大市场渠道(3)
  • android 缓存 清理(2)
  • Android 屏蔽hone back(2)
    推荐文章
    • *EventBus的使用与深入学习
    • *Android 拍照、选择图片并裁剪
    • *spark性能调优:开发调优
    • *Ceph架构
    • *neutron-server的启动流程(一)
    • * iOS 网络资源汇总之动画
    最新评论
  • android的无标题dialog以及dialog样式的窗体

    zk8951: 写的挺好的

  • android 缓存 清理

    HUSHILIN001: 我的QQ号是1738731967,求加,我们需要谈谈

  • android 缓存 清理

    HUSHILIN001: 楼主,你QQ号多少。我们需要谈谈

  • Android 屏蔽hone back

    stven_king: 好像也没试成功。。。

  • andorid 录音去噪音

    u012091829: 大神,有木有demo,求发个学习,[email protected]

  • android 一键锁屏

    ViviAn_dd: 跪求效果图

  • android读写串口

    xaioziyang: 求这个包这import com.friendlyarm.AndroidSDK.HardwareCon...

  • SystemUI

    u014702324: 你写的很棒,受益匪浅啊。能分享一下SystemUI的类图嘛,类之间的调用也是很有趣的。

  • android读写串口

    liuliuwujie1108: @jiaojiao2768:串口数据丢失问题解决没有

  • android自动接听和挂断电话

    wupy6: 哎 请楼主下次注意代码,还有楼正代码没贴完

你可能感兴趣的:(listview 优 化)