Chargement plus rapide ListView, plus rapide que la méthode Viewholder

Lorsque vous influez des vues pour une liste, est-il préférable d'avoir toutes les TextViews sans Android: texte dans le fichier .xml et combien cela affecte-t-il la vitesse? Qu'en est-il de ViewStubs, serait-il encore plus rapide?

En gonflant LinearLayout avec 8 textViews sans Android: texte et avec Android: text = "@ string / abc", cela change-t-il quelque chose? Notez que je réutilise les vues, alors peut-être que 10 ne sont pas gonflés, puis réutilisés, je ne sais pas.

  • Comment utiliser GraphicBuffer dans android ndk
  • Comment ajouter automatiquement des milliers de séparateurs lorsque le numéro est entré dans EditText
  • Après onLongPress, la première vue dans gridview obtient NullPointerException dans startDrag
  • Comment récupérer les données du marché Android lorsqu'il n'y a pas d'API?
  • L'application commence toujours par l'activité racine à la place de la reprise de l'état de fond (Bogue connu)
  • Affichage de la sélection actuelle dans une liste
  • Je développe sur une Lame ZTE, de sorte qu'un 'CPU unique de 600 Mhz et non un quad-core …

  • Cliquez deux fois sur le bouton Retour pour quitter une activité
  • Comment définir un vide dessiné
  • Qu'est-ce qui rend Guice impossible à exécuter sur Android, sauf comme Guice-no-aop?
  • Android: plusieurs menus d'options en une seule activité
  • Ubuntu 64 avec Android 64 Bundle ne peut pas trouver l'exécutable AdB
  • ExpandableLists in Android, je souhaite que seule une liste parentale se développe à la fois
  • 3 Solutions collect form web for “Chargement plus rapide ListView, plus rapide que la méthode Viewholder”

    Vous pouvez essayer cela, pas sûr d'accélérer, mais lui donner un coup de feu.

    Gonflez la disposition dans un thread en arrière-plan.

    View getView(int position, View convertView, ...) { View v; if (convertView == null) { Start a background thread to inflate your linearLayout. Pass item data and view 'v' to it. v = inflate a simple dummy textview; return v; } set normal stuff to convertview here. return convertView ; } 

    Dans le fil d'arrière-plan,

    • Infléchissez votre Linearlayout dans 'v'
    • Définissez toutes les données.
    • Puis invalidez la vue v .

       v.postInvalidate(); 

    Ceci est très utile lorsque vous accélérez les vues de la liste, en particulier le bit du titulaire de la vue: http://developer.android.com/training/improving-layouts/smooth-scrolling.html

    J'ai également une Lame ZTE, elles sont lentes, mais les applications qui fonctionnent bien sur elle sont incroyables sur les téléphones «normaux» 🙂

    Si vous remplacez le texte dans les aperçus de texte de toute façon, vous ne devriez pas vous occuper de les classer dans le XML.

    Un véritable tueur pour les performances tentant de faire dans les listes simples est les listes linéaires imbriquées. Avec un peu de travail, n'importe quel arborescence linéaire peut être remplacée par une application relative.

    Assurez-vous que vous n'utilisez pas findViewById en dehors de if (convertView == null) {bloquer en utilisant le style ViewHolder ou simplement en configurant view.setTag (R.id.resId, findViewById (R.ID.resID)).

    Vous avez mentionné dans les commentaires que vous rencontrez un délai lors du retour de votre asynctask. Assurez-vous de ne pas recharger le tableau après chaque entrée. Faites une mise à jour en bloc de la source de données, puis rechargez la table.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.