J'essaierais de l'expliquer avec un exemple.
Deux chefs travaillent dans un hôtel 5 étoiles et ils savent comment faire 10 types de pizza.Ils sont tous les deux aussi compétents , mais le premier chef est lent. Raison ?
- Chaque fois qu'une commande arrive, le chef ouvre un livre de recettes et suit la procédure , cela lui prend O(n) (ou temps linéaire) pour le faire.
- Le second chef a mémorisé chaque recette par ouïe , il a juste besoin de travailler sur la fabrication de la pizza , ce qui prend O(1) (temps constant).
Le premier chef est ListView , il appelle findViewById() Chaque fois qu'il doit rendre une vue.
Le second chef est RecyclerView , il ne fait que maintenir la référence(se souvient de leur emplacement en utilisant la mise en cache) aux vues qui ne sont pas utilisées d'où l'économie de l'appel findViewById().
Comment cela est réalisé ?
- L'adaptateur général utilise un itérateur pour créer de nouvelles vues et leur lie des données à partir de ce même jeu de données.
- RecyclerView fait usage de ViewHolders par défaut. Ainsi, l'adaptateur de recyclage au lieu de créer des vues, crée des ViewHolders qui contiennent les vues gonflées. Une fois créé, le ViewHolder est mis dans le cache et peut être réutilisé si nécessaire.
J'aurais pu aller dans plus de détails , mais ce n'était pas mon But. Mon objectif était de faire en sorte que cela semble relatable.