Suche…


Einführung

Die Leistung Ihrer Apps ist ein entscheidendes Element der Benutzererfahrung. Vermeiden Sie schlechte Performance-Muster, z. B. Arbeiten am UI-Thread, und lernen Sie, schnell und reaktionsschnelle Apps zu schreiben.

Speichern Sie View-Lookups mit dem ViewHolder-Muster

Insbesondere in einer ListView können Sie auf Leistungsprobleme ListView , wenn Sie zu viele findViewById() Aufrufe während des Bildlaufs findViewById() . Mit dem ViewHolder Muster können Sie diese ListView speichern und die ListView Leistung verbessern.

Wenn Ihr Listenelement ein einzelnes TextView enthält, erstellen Sie eine ViewHolder Klasse, um die Instanz zu speichern:

static class ViewHolder {
    TextView myTextView;
}

ViewHolder Erstellen Ihres Listenelements ein ViewHolder Objekt an das Listenelement an:

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;
}

Wenn Sie dieses Muster verwenden, wird findViewById() nur aufgerufen, wenn eine neue View erstellt wird und die ListView Ihre Ansichten viel effizienter recyceln kann.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow