BaseAdapter中的ConverView的作用和ListView的优化
ListViewの各アイテムはビューです。アイテムが表示領域からスライドすると、このアイテムに対応するビューがリサイクルされます。このビューは変換ビューです。変換ビューが適用されない場合は、アイテムがから削除されるたびにscreen、新しいビューがアイテムに追加され、オーバーヘッドが増加するため、converviewはそれらの新しく存在するアイテムを再利用できます。
最適化に関して、各アイテムのレイアウトが非常に複雑な場合、findViewByIdを介してコントロールを見つけると、間違いなくシステムオーバーヘッドが増加します。タグを参照し、getTagを使用してバインドされたViewHolderオブジェクトを取得することにより、ViewHolderオブジェクトはコントロールをレイアウトに格納します。重度のスクリーニングを回避し、効率を向上させるために、ViewHolderControlsによって選択されました。
言うまでも
ありませんが、コード:プライベートクラスMyAdapterはBaseAdapterを拡張します{
@Override
public int getCount()
{
return list.size();
}
@Override
public Object getItem(int position)
{
return position;
}
@Override
public long getItemId(int position)
{
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{ ViewHolder viewHolder;
LayoutInflater inflater=LayoutInflater.from(getActivity());
if(convertView==null){
viewHolder=new ViewHolder();
convertView =inflater.inflate(R.layout.listitem,null);
viewHolder.picture=(ImageView)convertView.findViewById(R.id.thumbnail);
viewHolder.title=(TextView)convertView.findViewById(R.id.title);
convertView.setTag(viewHolder);
}
else{
viewHolder=(ViewHolder)convertView.getTag();
}
viewHolder.picture.setImageBitmap((Bitmap)list.get(position).get("thumbNail"));
viewHolder.title.setText((String)list.get(position).get("title"));
return convertView;
}
}
プライベートクラスViewHolder {
ImageView画像;
TextViewタイトル;
}
}