ListView的优化--ViewHolder

以下是自己学习中的一点记录:


在android开发中ListView比较常用。

但是开发过程中会遇到这样的情况:

当ListView中的加载项过多时设备出现卡顿。

当下拉ListView列表时加载过慢。


为了保证在有大量列表项目需要加载时保证ListView不会缓慢和卡顿,在开发中可以用到ViewHoler。


大概思路就是:

1.添加ViewHoler类

2.实例化viewHolder

3.在首次创建View时将其取出并用convertView的setTag方法保存起来。

4.以后再次使用就用setTag取出,避免重复加载。

附上一个自己用到的实例:

 public View getView(int position, View convertView, ViewGroup parent) {
//        LayoutInflater inflater = LayoutInflater.from(context);
//        layout = (LinearLayout) inflater.inflate(R.layout.call,null);
//        TextView nametv = (TextView) layout.findViewById(R.id.phoneName);
//        TextView numbertv = (TextView) layout.findViewById(R.id.phoneNumber);
//        nametv.setText(lists.get(position).getName());
//        numbertv.setText(lists.get(position).getNumber());
        ViewHolder holder;
        if (convertView == null){
            convertView = LayoutInflater.from(context).inflate(R.layout.call,null);
            holder = new ViewHolder();
            holder.nametv = (TextView) convertView.findViewById(R.id.phoneName);
            holder.numbertv = (TextView) convertView.findViewById(R.id.phoneNumber);
            holder.nametv.setText(lists.get(position).getName());
            holder.numbertv.setText(lists.get(position).getNumber());
            convertView.setTag(holder);
        }else {
            holder = (ViewHolder) convertView.getTag();
            holder.nametv.setText(lists.get(position).getName());
            holder.numbertv.setText(lists.get(position).getNumber());
        }

        return convertView;
    }
    public static class ViewHolder {
        TextView nametv;
        TextView numbertv;
    }
注意:


被注释掉的代码是没有优化的情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值