El papel de ConverView en BaseAdapter y la optimización de ListView

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

Cada elemento de ListView es una vista. Cuando un elemento se desliza fuera del área visible, la vista correspondiente a este elemento se reciclará. Esta vista es la conversión. Si la conversión no es aplicable, cada vez que el elemento se elimina de la pantalla, se agrega una nueva vista al elemento, lo que aumenta la sobrecarga, por lo que la vista puede reutilizar esos elementos nuevos existentes.
Con respecto a la optimización, si el diseño de cada elemento es muy complicado, encontrar el control a través de findViewById sin duda aumentará la sobrecarga del sistema. Al hacer referencia a la etiqueta y usar getTag para obtener el objeto ViewHolder enlazado, el objeto ViewHolder almacena los controles en el diseño y es seleccionados por ViewHolder Controls para evitar un tramado pesado y mejorar la eficiencia. No hay
mucho que decir, el código:
clase privada MyAdapter extiende 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 de clase privada {
imagen ImageView;
Título de TextView;
}
}

Supongo que te gusta

Origin blog.csdn.net/skateboard1/article/details/44514465
Recomendado
Clasificación