使用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