RecyclerView vs ListView
De développeur android (La création de Listes et Cartes):
La RecyclerView widget est un plus avancé et flexible version de
ListView.
D'accord, c'est plutôt cool, mais quand j'ai vu cette image d'exemple, je suis vraiment confus au sujet de la différence entre ces deux.
L'image ci-dessus peuvent être facilement créés en ListView
l'aide personnalisée.
L'affirmative, dans quelle situation faut-il RecyclerView
?
- premier coup d'œil-les androïdes-recyclerview
- Je vous suggère d'ajouter un commentaire ici en expliquant en détail ce que vous ressentez est manquant à partir de la beaucoup questions / réponses sur cette question.
InformationsquelleAutor Blaze Tama | 2014-11-04
Vous devez vous connecter pour publier un commentaire.
RecyclerView
a été créé comme unListView
amélioration, donc, oui, vous pouvez créer une liste jointe avecListView
de contrôle, mais à l'aide deRecyclerView
est plus facile comme ça:Réutilise les cellules pendant le défilement vers le haut/vers le bas - ce qui est possible avec la mise en œuvre de Vue Titulaire dans le
ListView
adaptateur, mais c'était une option de chose, tandis que dans leRecycleView
c'est la méthode par défaut de l'écriture de l'adaptateur.Dissocie de la liste à partir de son conteneur - de sorte que vous pouvez mettre les éléments de la liste facilement au moment de l'exécution dans les différents conteneurs (linearLayout, gridLayout) avec réglage
LayoutManager
.Exemple:
ItemAnimator
.Il n'y a plus à propos de
RecyclerView
, mais je pense que ces points sont les principaux.Donc, pour conclure,
RecyclerView
est un moyen plus souple de contrôle pour la manipulation de la "liste des données" qui suit des modes de délégation des préoccupations et des feuilles pour lui-même une seule tâche - le recyclage des éléments.Pour les vues de liste pour avoir de bonnes performances, vous aurez besoin de mettre en œuvre le titulaire de modèle, et c'est facile de rater surtout quand vous voulez pour remplir la liste avec plusieurs types de vues.
La RecyclerView cuit ce modèle, ce qui rend plus difficile de désordre. Il est également plus flexibles, ce qui rend plus facile à manipuler différentes dispositions, qui ne sont pas droites, linéaires, comme une grille.
ListView
est l'ancêtre deRecyclerView
. Il y avait beaucoup de choses queListView
soit ne pas faire, ou ne doit pas faire bien. Si vous étiez à recueillir les lacunes de laListView
et résolu le problème en faisant abstraction des problèmes dans les différents domaines que vous auriez retrouver avec quelque chose comme le recycleur vue. Voici le principal problème des points avec les ListViews:Ne pas appliquer
View
Réutiliser pour les mêmes types d'élément (voir l'une des cartes, qui sont utilisés dans unListView
, si vous étudiez la méthode getView vous verrez que rien n'empêche un programmeur de créer une nouvelle vue pour chaque ligne, même si l'on est passées par leconvertView
variable)N'a pas empêché coûteux
findViewById
utilise(Même si vous étiez de recyclage vues comme indiqué ci-dessus, il a été possible pour les développeurs d'appelerfindViewById
de mettre à jour le contenu affiché de vues enfant. Le but principal de laViewHolder
modèle dansListViews
était de mettre en cache lesfindViewById
appels. Cependant, cela n'était disponible que si vous saviez que ce n'était pas une partie de la plate-forme à tous)Uniquement pris en charge le Défilement Vertical avec Ligne affichée Vues (Recycleur de vue ne se soucie pas d'où les vues sont passées et la façon dont ils sont déplacés, il est placé dans un
LayoutManager
. Un Recycleur peut donc soutenir le traditionnelListView
comme indiqué ci-dessus, ainsi que des choses comme laGridView
, mais il n'est pas limité à cela, il peut faire plus, mais vous avez à faire de la programmation travail à pied pour y arriver).Animations ajoutées/supprimées n'était pas un cas d'utilisation qui a été considéré. Il est complètement à vous de trouver comment aller à ce sujet (comparer les RecyclerView. Adaptateur classes informer* méthode d'offres v. ListViews pour vous faire une idée).
En bref
RecyclerView
est plus souple à laListView
, mais plus de codage peuvent avoir besoin d'être fait sur votre partie.Répondre à des prises de Antonio leiva
RecyclerView
est en effet unpowerful view
queListView
.Pour plus de détails, vous pouvez visiter Cette page.
Voici quelques points clés et les différences entre RecyclerView & ListView. Prendre votre appel à bon escient.
Avantage majeur :
ViewHolder
n'est pas disponible par défaut dansListView
. Nous allons créer explicitement à l'intérieur de lagetView()
.RecyclerView
a intégréViewholder
.Avantages de RecyclerView sur listview :
Contient ViewHolder par défaut.
Facile d'animations.
Prend en charge horizontale de la grille , et l'étalement des mises
Avantages de la listView sur recyclerView :
Facile d'ajouter de diviseur.
Pouvez utiliser intégré arrayAdapter pour de simples listes de
Appuie-Tête et pied de page .
Prend En Charge OnItemClickListner .
recyclerView.addItemDecoration(new DividerItemDecoration(getContext(), LinearLayoutManager.VERTICAL));
après avoir fait quelque chose commerecyclerView = view.findViewById(R.id.feed);
Je pense que la principale et la plus grande différence qu'ils ont, c'est qu'
ListView
recherche de la position de l'élément lors de la création ou de la mettre, d'autre partRecyclerView
recherche le type de l'élément. si il y a un autre élément créé avec le même type deRecyclerView
ne pas créer de nouveau. Il demande tout d'abord de l'adaptateur, puis demande à recycledpool, si recyclée de la piscine dit "ouais, j'ai créé un type semblable à lui", puisRecyclerView
n'essayez pas de créer de même type.ListView
ne dispose pas de ce type de mécanisme de mise en commun.En plus par-dessus les différences suivantes sont quelques-uns de plus:
RV sépare la création de la vue et de la liaison de données à afficher.
En BT, vous devez vérifier si convertView est null ou pas pour la création de la vue, avant la liaison de données.
Ainsi, en cas de RV, la vue sera créé uniquement lorsque cela est nécessaire mais en cas de LV, on peut manquer de le vérifier pour le convertview et créer la vue à chaque fois.
De commutation entre la Grille et la Liste est plus facile maintenant avec LayoutManager.
Pas besoin de communiquer et de mettre à jour tous les éléments, même si un seul élément est modifié.
L'on devait mettre en œuvre la vue de mise en cache en cas de LV.
Il est fourni en RV par défaut. (Il existe une différence entre le cache de vue n de recyclage.)
Très facile de l'élément animations dans le cas de RV.
À mon avis
RecyclerView
a été fait pour résoudre le problème avec le recycler motif est utilisé dans les listviews parce qu'il faisait du développeur vie plus difficile.Tous les autres que vous pourriez manipuler plus ou moins.
Par exemple, j'ai utiliser la même carte pour
ListView
etGridView
il n'a pas d'importance dans les deux vues de lagetView
,getItemCount
,getTypeCount
est utilisé donc c'est la même.RecyclerView
n'est pas nécessaire siListView
avecListAdapter
ouGridView
avec grille de cartes est déjà au travail pour vous.Si vous avez correctement mis en œuvre les
ViewHolder
motif dans votre listviews alors vous ne verrez pas de grosse améliorationRecycleView
.J'ai travaillé un peu avec
RecyclerView
et préfèrent encoreListView
.Sûr, ils utilisent tous les deux
ViewHolders
, donc ce n'est pas un avantage.Un
RecyclerView
est plus difficile à coder.Un
RecyclerView
ne contient pas d'en-tête et pied de page, donc c'est un moins.Un
ListView
n'a pas besoin de faire un ViewHolder. Dans le cas où vous voulez avoir une liste avec des sections ou des subheaders ce serait une bonne idée de faire des articles (sans ViewHolder), il est plus facile et ne nécessite pas de catégories distinctes.technique avec les ListViews, trop.
match_parent et d'une hauteur de 1dp et lui donner une couleur d'arrière-plan.
L'en-tête hors de la Vue.
Donc, si l'efficacité est votre préoccupation, alors oui, c'est une bonne idée de remplacer une ListView avec un RecyclerView.
Réponse Simple: Vous devez utiliser RecyclerView dans une situation où vous souhaitez afficher un grand nombre d'éléments, et le nombre d'entre eux est dynamique. ListView doit être utilisé uniquement lorsque le nombre d'éléments est toujours le même et est limitée à la taille de l'écran.
Vous trouvez qu'il est plus difficile parce que vous pensez juste avec l'Android de la bibliothèque à l'esprit.
Il existe aujourd'hui beaucoup d'options qui vous permettront de créer vos propres cartes, le rendant facile pour générer des listes et grilles de dynamique des éléments que vous pouvez choisir, réorganiser, de l'animation, des diviseurs, ajouter les pieds de page, les en-têtes, etc, etc.
N'ayez pas peur et essayer de RecyclerView, vous pouvez commencer à l'aimer faire une liste de 100 articles téléchargés à partir du web (comme facebook news) dans une liste et une RecyclerView, vous verrez la différence dans l'UX (expérience utilisateur) lorsque vous essayez de faire défiler, probablement l'appli de test s'arrête avant que vous pouvez même le faire.
Je vous recommande de vérifier ces deux bibliothèques pour faciliter l'accès aux cartes:
FastAdapter par mikepenz
FlexibleAdapter par davideas
RecyclerView info
La
RecyclerView
a été introduit avecAndroid 5.0 (Lollipop)
. il est inclus dans le Bibliothèque De Prise En Charge. Ainsi, il est compatible avec Android API de Niveau 7.De même pour la
ListView
,RecyclerView’s
idée principale est de fournir une liste de fonctionnalités dans une performance de manière amicale. Le "Recycler" une partie de ce point de vue est le nom n'est pas là par hasard. LeRecyclerView
peut effectivement recycler les éléments avec lesquels il travaille actuellement. Le processus de recyclage est réalisé grâce à un modèle appelé Vue Titulaire.Pros & les Inconvénients de RecyclerView
Pour:
Contre:
ListView info
La
ListView
a été autour depuis le début de Android. Il a été disponible, même dansAPI Level 1
et il a le même objectif que leRecyclerView
.L'utilisation de la liste est en fait très simple. Dans cet aspect, il n'est pas comme son successeur. La courbe d'apprentissage est plus lisse que celle de la RecyclerView. Ainsi, il est plus facile à saisir. Nous n'avons pas à traiter avec des choses comme la LayoutManager, ItemAnimator ou DiffUtil.
Pros & Inconvénients de la ListView
Pour:
ExpandableListView
Contre: