您的位置:首页 > 移动开发 > Android开发

listView 优化 -ViewHolder

2015-11-29 14:04 477 查看
ViewHolder模式是提高ListView效率的一个很重要的方法,ViewHolder充分利用了ListView视图缓存机置,避免每次在getView()中都去通过findViewById()实例化控件,可以提高50%的效率,此模式很简单,只要在Adapter中定义一个内部类,并将布局中的控件作为成员变量。

public final class ViewHolder{
public ImageView img;
public TextView title;

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
HashMap<String, Object> Info = mList.get(position);
if(convertView == null){
holder = new ViewHolder();

                        //通过LayoutInflater实例化布局
convertView =  LayoutInflater.from(context).inflate(R.layout.item_list_select_car, null);
holder.img = (ImageView) convertView.findViewById(R.id.iv_item_select_car_brand);
holder.title = (TextView) convertView.findViewById(R.id.tv_item_select_car_name);
convertView.setTag(holder);//保存到缓存中
}
else{
//通过tag找到缓存布局
holder = (ViewHolder) convertView.getTag();
}

if(Info != null){

String icon = (String) Info.get("icon");
String brandName = (String) Info.get("brandName");

holder.title.setText(brandName);
setImageLoader(holder.img,Constants.ICON_HEAD+icon);
}

return convertView;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息