ConvertView和ViewHolder的个人理解

关于ConvertView和viewHolder我个人的理解记录一下方便记忆。

ConvertView :
顾名思义,是一个能够重复使用的View。当用户将手机滑动,处于屏幕最上面的item被移出,此时android回收系统会将这个View保存起来,以便下一个从底部更新出来的item复用,这样就可减少由于每次getView()都要新建View的内存消耗。
ViewHoler:
ViewHolder可以看成是一个与ConvertView相互依存的容器,它内部存储了ConvertView所创建的控件,ConvertView通过.setTag()把自身创建的控件存储到ViewHolder中,并与之绑定,后续需要更新ConvertView数据时,可直接通过ViewHolder来进行,从而省去了每次都要findViewById()所消耗的内存。
@Override
	public View getView(int position, View convertview, ViewGroup arg2) {
		// TODO Auto-generated method stub
		ViewHolder holder=null;
		if(convertview==null){
			convertview=inflater.inflate(R.layout.item, null);
			
			holder=new ViewHolder();
			holder.name=(TextView) convertview.findViewById(R.id.name);
			holder.des=(TextView) convertview.findViewById(R.id.des);
			holder.icon=(ImageView) convertview.findViewById(R.id.iv);
			convertview.setTag(holder);
		}else{
			holder=(ViewHolder) convertview.getTag();
			
		}
	    Log.i("info", "names[position]:"+names[position]);
	    holder.name.setText(names[position]);
	    holder.des.setText(des[position]);
	    holder.icon.setImageResource(icon[position]);
	
		
		return convertview;
	}
	
   private static  class  ViewHolder{
	   
	   TextView  name ;
	   TextView des;
	   ImageView icon;
	  
	   
   }

猜你喜欢

转载自blog.csdn.net/mahuicool/article/details/78170092