ListView优化--ViewHolder的使用

使用viewHolder的好处就不多说了…
怎么使用及使用时应注意的一些东西写给自己看~~

1、一般都是在adapter中定义一个内部类,方便快捷你懂的
属性就是listview每个item中的控件,另外为了方便还定义了一个方法用来给每个控件设置数据。

class ViewHolder {
        public TextView tv_bgdh;
        public TextView tv_tdh;
        public TextView tv_qyjc;

        public void setAllText(BgdInfo data) {
            this.tv_bgdh.setText(data.getBgdh());
            this.tv_tdh.setText(data.getTdh());
            this.tv_qyjc.setText(data.getQyjc());
        }
    }

2、接下来就是在adapter中的getView方法中使用了

public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder;
        if (convertView == null) {
            convertView = LayoutInflater.from(context).inflate(R.layout.tgcx_list_item, null);
            viewHolder = new ViewHolder();
            viewHolder.tv_bgdh = (TextView) convertView.findViewById(R.id.tv_bgdh);
            viewHolder.tv_tdh = (TextView) convertView.findViewById(R.id.tv_tdh);
            viewHolder.tv_qyjc = (TextView) convertView.findViewById(R.id.tv_qyjc);

            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
            resetViewHolder(viewHolder);
        }

    viewHolder.setAllText(datas.get(position));
        return convertView;
    }

3、注意上一步中resetViewHolder(viewHolder)方法,这个方法的目的是重置viewHolder控件中的数据,因为复用的关系,item中的数据有可能造成混乱,再写个这个方法试试

public void resetViewHolder(ViewHolder viewHolder) {
        viewHolder.tv_bgdh.setText(null);
        viewHolder.tv_tdh.setText(null);
        viewHolder.tv_qyjc.setText(null);
    }

4、OK

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值