Ricerca…


introduzione

Le prestazioni delle tue app sono un elemento cruciale dell'esperienza utente. Cerca di evitare schemi di cattiva esecuzione come lavorare sul thread dell'interfaccia utente e imparare come scrivere applicazioni veloci e reattive.

Salvare le ricerche View con il pattern ViewHolder

Soprattutto in un ListView , è possibile incorrere in problemi di prestazioni facendo troppe chiamate findViewById() durante lo scorrimento. Utilizzando il pattern ViewHolder , è possibile salvare queste ricerche e migliorare le prestazioni di ListView .

Se la tua voce di elenco contiene un singolo TextView , crea una classe ViewHolder per memorizzare l'istanza:

static class ViewHolder {
    TextView myTextView;
}

Durante la creazione dell'elemento della lista, allegare un oggetto ViewHolder alla voce dell'elenco:

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

Utilizzando questo modello, findViewById() verrà chiamato solo quando viene creata una nuova View e ListView può riciclare le visualizzazioni in modo molto più efficiente.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow