Android--ListView 更高效的使用 Adapter

原出处: http://www.cnblogs.com/felix-hua/archive/2012/01/06/2314436.html


Android--ListView 更高效的使用 Adapter

一、Adapter

Adapter是ListView和数据源之间的中间人。

当每条数据进入可见区时,adapter会调用他的getView()方法,并返回代表具体数据的视图。滚动的时候频繁调用,支持成千上万的数据。

①、最简单的方法,最慢最不实用

public void getView(int position , View convertView , ViewGroup parent){
        View item = mInflater.inflate(R.layout.list_view, null);
        (TextView)item.findViewById(R.id.text).setText(DATA[position]);
        (ImageView)item.findViewById(R.id.img).setImageBitmap(icon);
        return item;
    }

②、利用convertView回收视图,效率提高200%

复制代码
public void getView(int position , View convertView , ViewGroup parent){
        if(convertView == null){
            convertView = mInflater.inflate(R.layout.list_view, null);
        }
      (TextView)convertView.findViewById(R.id.text).setText(DATA[position]);
      (ImageView)convertView.findViewById(R.id.img).setImageBitmap(icon);
         return convertView;
    }  
复制代码

③、使用ViewHolder模式,效率再提高50%

复制代码
static class ViewHolder{
        private TextView tv;
        private ImageView iv;
    }
    
    public void getView(int position , View convertView , ViewGroup parent){
        ViewHolder holder;
        if(convertView == null){
            convertView = mInflater.inflate(R.layout.list_view, null);
            holder = new ViewHolder();
            holder.tv = (TextView)convertView.findViewById(R.id.text);
            holder.iv = (ImageView)convertView.findViewById(R.id.img);
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }
        holder.tv.setText(DATA[position]);
        holder.iv.setImageBitmap(icon);
        return convertView;
    }
复制代码

更新的效率比较:


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值