Buscar..


Introducción

El rendimiento de su aplicación es un elemento crucial de la experiencia del usuario. Intente evitar los patrones de mal desempeño, como trabajar en el hilo de la interfaz de usuario y aprenda a escribir aplicaciones rápidas y con capacidad de respuesta.

Guardar búsquedas de vista con el patrón ViewHolder

Especialmente en un ListView , puede tener problemas de rendimiento al hacer demasiadas llamadas findViewById() durante el desplazamiento. Al usar el patrón ViewHolder , puede guardar estas búsquedas y mejorar el rendimiento de su ListView .

Si su elemento de lista contiene un solo TextView , cree una clase ViewHolder para almacenar la instancia:

static class ViewHolder {
    TextView myTextView;
}

Al crear su elemento de lista, adjunte un objeto ViewHolder al elemento de lista:

public View getView(int position, View convertView, ViewGroup parent) {
    Item i = getItem(position);
    if(convertView == null) {
        convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent, false);

        // Create a new ViewHolder and save the TextView instance
        ViewHolder holder = new ViewHolder();
        holder.myTextView = (TextView)convertView.findViewById(R.id.my_text_view);
        convertView.setTag(holder);
    }

    // Retrieve the ViewHolder and use the TextView
    ViewHolder holder = (ViewHolder)convertView.getTag();
    holder.myTextView.setText(i.getText());
   
    return convertView;
}

Usando este patrón, solo se llamará a findViewById() cuando se crea una nueva View y el ListView puede reciclar sus vistas de manera mucho más eficiente.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow