web-dev-qa-db-fra.com

Disposition de la grille vs. Disposition de la table

Je travaille sur un moteur de réservation Android comme un système de réservation de compagnie aérienne. Pour récupérer le contenu de toutes les compagnies aériennes disponibles spécifiques à une recherche de passagers, cela est ensuite affiché sur l'écran du mobile.

Laquelle, une disposition de tableau ou une disposition de grille, sera efficace compte tenu du temps de chargement de l'écran, de la consommation de mémoire système et des fonctionnalités supplémentaires?

35
learn_andrd

** MODIFIER: Cette ligne était correcte lorsque cette réponse a été écrite, mais ne s'applique plus à 99,9% + de tous les appareils Android: There is no GridLayout in the Android API. **

(Remarque: à partir du niveau 14 de l'API, il y a enfin GridLayout; voir les réponses ci-dessous. De plus, la bibliothèque de support V7 ajoute le support GridLayout à l'API 7. Cependant, la description de cette réponse de GridView est toujours précise et très bien indiqué.)

Si vous voulez dire que GridView, TableLayout et GridView sont complètement des choses différentes.

Un GridView est fondamentalement comme un ListView mais dont les éléments sont disposés dans une grille stricte. Il est attaché à un adaptateur et récupère les vues de l'adaptateur lorsque l'utilisateur le fait défiler. Tous les éléments de la grille doivent avoir la même taille. L'utilisateur peut déplacer un sélecteur visible à travers chaque élément - le but d'un GridLayout est d'afficher les données d'un adaptateur et de laisser l'utilisateur naviguer et sélectionner chacun des éléments affichés. La seule différence avec un ListView est que les éléments sont placés dans une grille plutôt que dans une liste verticale.

TableLayout est juste un gestionnaire de disposition, un peu comme un tableau en HTML. Il ne fait pas lui-même de défilement; pour avoir quelque chose qui défile, vous devez mettre le TableLayout dans un ScrollView. Cela implique que toutes les données que vous affichez doivent être renseignées à l'avance dans le TableLayout, de sorte que ScrollView connaît l'espace total dans lequel il doit défiler. Il ne vous donne pas non plus directement de sélection ou d'interaction par "élément", car un TableLayout n'a pas d'éléments, c'est juste un gestionnaire de disposition.

Vous n'avez en fait pas donné suffisamment d'informations utiles sur ce que vous essayez de faire pour que quiconque recommande quoi utiliser. Cela dépend beaucoup de ce que vous voulez spécifiquement.

Je veux dire ce qui sera utile en termes de "fonctionnalités supplémentaires"?!? Eh bien, quelles sont les fonctionnalités que vous recherchez!

Quoi qu'il en soit, en règle générale, une vue basée sur l'adaptateur doit être utilisée pour toute situation où vous avez une quantité importante de données que l'utilisateur fait défiler la vue; ceux-ci sont beaucoup plus efficaces que d'avoir à créer toute la hiérarchie de vue à l'avance pour afficher vos données. Ils sont également les seuls à proposer automatiquement une sélection par article et d'autres fonctionnalités de ce type. La vue principale utilisée par les applications est ListView, bien que GridView puisse également être utilisé.

33
hackbod

Depuis Android 4.0, il y a quelque chose comme GridLayout . GridLayout est toujours préférable à TableLayout. Il fournit tout ce que vous avez déjà sur TableLayout, et peut remplacer d'autres mises en page aussi.

Cela semble assez cool, et il semble que Google souhaite qu'il soit aussi populaire que le LinearLayout (selon leurs vidéos de Android 4.0).


EDIT: si vous devez montrer beaucoup d'éléments, pensez à utiliser RecyclerView avec GridLayoutManager. Cela peut aider en termes de mémoire et d'utilisation du processeur.

20
android developer

Les configurations de TableLayout sont normalement simples à gérer, car GridLayout prend en charge la répartition des lignes et des colonnes. Les TableRows peuvent être supprimées, car elles ne sont pas requises par GridLayout. Pour la même interface utilisateur, un GridLayout sera généralement plus rapide et prendra moins de mémoire qu'un TableLayout.

TableLayout est pris en charge sur toutes les versions Android, tandis que GridLayout nécessite le niveau 11 (Android ICS 4.0) ou supérieur, mais il peut être facilement ajouté via la bibliothèque de support v7 à niveau de support 7 (Android 2.1) ou supérieur

10
Muhammad Annaqeeb

Ceci est une belle présentation de GridLayout qui souligne également les différences par rapport à TableLayout: http://blog.stylingandroid.com/archives/669

Cependant, l'une des différences les plus importantes est qu'il n'est disponible qu'en ICS (Sandwich à la crème glacée) et plus récent. Cela signifie actuellement moins de 30% de part de marché donc pour la plupart des développeurs, la réponse serait: attendez quelques années avant d'utiliser GridLayout. YMMV bien sûr.

4
johndodo

Je pense que GridView devrait mieux fonctionner car comme il est implémenté avec le recyclage des vues et les éléments hérités de AbsListView. GridView est plus difficile à déployer car vous devez utiliser avec Adapter mais cela fonctionnera efficacement si vous avez beaucoup de vues lourdes à charger telles que des images

2
romy_ngo

Dans les dispositions de grille, les composants peuvent automatiquement définir la vue en prenant numcolumns = "autofit". Ici, nous n'avons pas besoin de définir le nombre de lignes et de colonnes dont nous avons besoin, mais dans la disposition des tableaux, nous n'avons pas ce type d'option et nous devons définir le nombre de lignes et de colonnes dont nous avons besoin. Dans la disposition du tableau, nous ne pouvons pas insérer plus d'un élément dans une ligne sans utiliser la disposition relative

0
Kimmi