Zoeken…


Invoering

De prestaties van uw apps zijn een cruciaal onderdeel van de gebruikerservaring. Probeer patronen te voorkomen die slecht presteren, zoals werk aan de gebruikersinterface en leer hoe u snelle en responsieve apps kunt schrijven.

Sla View-lookups op met het ViewHolder-patroon

Vooral in een ListView kunt u prestatieproblemen findViewById() tijdens het scrollen te veel findViewById() -aanroepen te doen. Door het ViewHolder patroon te gebruiken, kunt u deze opzoekingen opslaan en uw ListView prestaties verbeteren.

Als uw lijst bevat een enkele TextView , maakt u een ViewHolder klasse aan de instantie op te slaan:

static class ViewHolder {
    TextView myTextView;
}

ViewHolder tijdens het maken van uw lijstitem een ViewHolder object toe aan het lijstitem:

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

Met dit patroon wordt findViewById() alleen aangeroepen wanneer een nieuwe View wordt gemaakt en de ListView uw weergaven veel efficiënter kan recyclen.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow