ViewHolder를 사용하여 list 성능 최적화

1701 단어 viewholder
리스트에 있는 item은 어댑터 adapter의 getview 방법을 호출해서view 대상을 표시하는 것으로 알려져 있습니다.만약 우리가 매번 getview 방법에서 하나의 대상을 실례화한다면, 시간도 낭비하고 자원도 낭비할 것이다.그래서 우리는listview가 캐시한view를 충분히 활용해야 하고 getview () 함수의 두 번째 인자인convertview는list에서 item의 캐시의view 대상이다.초기화할 때 캐시에view 대상이 없으면 convertView는null입니다.
 
다음 코드는 클래스 ViewHolder로 캐시를 잘 활용해 성능을 향상시켰다.
 
 
public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
//		return super.getView(position, convertView, parent);
		final ViewHolder holder;
		if(convertView==null){
		convertView=LayoutInflater.from(context).inflate(resource, null);
		holder=new ViewHolder();
		holder.button=(Button)convertView.findViewById(R.id.group);
		holder.title=(TextView)convertView.findViewById(R.id.title);
		holder.image=(ImageView)convertView.findViewById(R.id.photo);
		holder.username=(TextView)convertView.findViewById(R.id.username);
		convertView.setTag(holder);
		}
		else{
			holder=(ViewHolder)convertView.getTag();
		}
		holder.title.setText(data.get(position).get(from[0]).toString());
		holder.image.setImageBitmap((Bitmap)data.get(position).get(from[2]));
		holder.username.setText(data.get(position).get(from[3]).toString());
		holder.button.setText(data.get(position).get(from[1]).toString());
		

		return convertView;
}

 
 
클래스 ViewHolder 정의:
 
 
 
	static class ViewHolder {
		ImageView image;
		Button button;
		TextView title;
		TextView username;
	}
 
 

좋은 웹페이지 즐겨찾기