Le rôle de ConverView dans BaseAdapter et l'optimisation de ListView

    BaseAdapter中的ConverView的作用和ListView的优化

Chaque élément de la ListView est une vue. Lorsqu'un élément glisse hors de la zone visible, la vue correspondant à cet élément sera recyclée. Cette vue est la vue convergente. Si la vue convergente n'est pas applicable, chaque fois que l'élément est supprimé de la écran, une nouvelle vue est ajoutée à l'élément, ce qui augmente la surcharge, de sorte que le converview puisse réutiliser ces éléments nouvellement existants.
En ce qui concerne l'optimisation, si la mise en page de chaque élément est très compliquée, trouver le contrôle via findViewById augmentera sans aucun doute la surcharge du système. En référençant le Tag et en utilisant getTag pour obtenir l'objet ViewHolder lié, l'objet ViewHolder stocke les contrôles dans la mise en page et est sélectionné par ViewHolder Controls pour éviter un filtrage lourd et améliorer l'efficacité. Pas
grand chose à dire, le code:
la classe privée MyAdapter étend 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;
    }
}

classe privée ViewHolder {ImageView
image;
Titre TextView;
}
}

Je suppose que tu aimes

Origine blog.csdn.net/skateboard1/article/details/44514465
conseillé
Classement