Recherche…


Introduction

La performance de vos applications est un élément crucial de l'expérience utilisateur. Essayez d'éviter les problèmes de performances, tels que le travail sur le thread d'interface utilisateur et apprenez comment écrire des applications rapides et réactives.

Enregistrer les recherches avec le modèle ViewHolder

Surtout dans ListView , vous pouvez rencontrer des problèmes de performances en faisant trop d' findViewById() pendant le défilement. En utilisant le modèle ViewHolder , vous pouvez enregistrer ces recherches et améliorer vos performances ListView .

Si votre élément de liste contient un seul objet TextView , créez une classe ViewHolder pour stocker l'instance:

static class ViewHolder {
    TextView myTextView;
}

Lors de la création de votre élément de liste, ViewHolder un objet ViewHolder à l'élément de liste:

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

Grâce à ce modèle, findViewById() sera uniquement appelé lors de la création d'une nouvelle View et le ListView pourra recycler vos vues beaucoup plus efficacement.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow