六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 148|回复: 0

ListView等的Adapter优化

[复制链接]

升级  16.67%

17

主题

17

主题

17

主题

秀才

Rank: 2

积分
75
 楼主| 发表于 2013-2-7 20:17:59 | 显示全部楼层 |阅读模式
      众所周知,Adapter是ListView与界面和数据之间的桥梁,通过Adapter中的gerView()方面来获得界面要显示的View,但你有没有想过,当ListView中数据量很大时,如何对Adapter进行优化呢?
   以下有三种实现方式,具体来看一下。
  1.

public View getView(int position, View convertView, ViewGroup parent){final LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);  View v = inflater.inflate(R.layout.list_item_icon_text, null);((ImageView) v.findViewById(R.id.icon)).setImageResource(R.drawable.icon);((TextView) v.findViewById(R.id.text)).setText(mData[position]);return v;}   这是最简单的一种方式,没有经过任何的优化,菜鸟级别的人很容易这样做。
 
 2.

public View getView(int position, View convertView, ViewGroup parent){if(convertView == null){convertView = inflater.inflate(R.layout.list_item_icon_text, null);}((ImageView) v.findViewById(R.id.icon)).setImageResource(R.drawable.icon);((TextView) v.findViewById(R.id.text)).setText(mData[position]);return convertView;}  这是一种稍微改进的方式,有形成每个ListView的item时,每个Item的容器对象进行了重得利用。
 
 3.

public View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder;if (convertView == null) {final LayoutInflater inflater = (LayoutInflater) mContext           .getSystemService(Context.LAYOUT_INFLATER_SERVICE);convertView = inflater.inflate(R.layout.list_item_icon_text, null);holder = new ViewHolder();holder.icon = (ImageView) convertView.findViewById(R.id.icon);holder.text = (TextView) convertView.findViewById(R.id.text);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}holder.icon.setImageResource(R.drawable.icon);holder.text.setText(mData[position]);return convertView;}  static class ViewHolder {ImageView icon;TextView text;} 这是09年Google IO大会上给出的优化建议,经过改进后,在处理大量数据的时候,确实流畅了很多。
 
文章参照:
http://www.ideasandroid.com/archives/295
http://www.cnblogs.com/halzhang/archive/2010/12/05/1896791.html
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表