Sök…


Introduktion

Din Apps-prestanda är en avgörande del av användarupplevelsen. Försök att undvika mönster med dåligt resultat som att göra arbete på UI-tråden och lära dig att skriva snabba och lyhörda appar.

Spara View-uppslag med ViewHolder-mönstret

Speciellt i en ListView kan du ListView på prestandaproblem genom att göra för många findViewById() under rullning. Genom att använda ViewHolder mönstret kan du spara dessa sökningar och förbättra ListView prestanda.

Om ditt listobjekt innehåller en enda TextView , skapar du en ViewHolder klass för att lagra instansen:

static class ViewHolder {
    TextView myTextView;
}

ViewHolder ett ViewHolder objekt till ViewHolder när du skapar ditt ViewHolder :

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

Med hjälp av detta mönster kommer findViewById() bara att findViewById() när en ny View skapas och ListView kan återvinna dina vyer mycket mer effektivt.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow