2010-09-07 3 views
2

J'ai une question générale concernant la séparation des mises en page d'Android dans les fichiers layout.xml:Comment dupliquer Vues pour remplir des listes et des tableaux?

Mon application doit afficher une table où le nombre de lignes et de colonnes varie au moment de l'exécution. Jusqu'ici, j'ai fait la mise en page jusqu'à TableView dans le fichier layout/.... xml correspondant, puis j'ai ajouté TableRow-s et des cellules (TextView) à la table au moment de l'exécution si nécessaire. L'inconvénient de l'ajout programmé de lignes et de cellules est que l'on ne peut pas vraiment changer la conception plus tard (par exemple en changeant les couleurs ou les marges pour les cellules) sans modification ultérieure du code. Ce que je voudrais faire ceci est d'ajouter une seule rangée à la table et une seule cellule à la rangée dans le fichier de disposition et puis les utiliser comme un "modèle" ou des gabarits pour générer toutes les lignes de la table et cellules. Cela permettrait de spécifier des couleurs et d'autres paramètres dans le fichier layout.xml (et donc de pouvoir les modifier ultérieurement sans changement de code) tout en permettant un nombre arbitraire de colonnes et de cellules.

Cependant, je n'ai trouvé aucune méthode "copy" -constructor ou "duplicate" dans Views. Comment peut-on y parvenir? Quelle est la méthode suggérée pour créer des listes ou des tables à partir d'un seul élément "exemple" ou modèle? Ou y at-il une autre méthode pour réaliser ce que je veux?

espoir que je pourrais me faire comprendre ... Michael

Répondre

8

En général, avec un TableLayout ou ListView, vous créez une mise en page fichier xml pour la ligne, puis le gonfler pour chaque instance d'un programme.

LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

TableRow rowView = (TableRow)inflater.inflate(R.layout.my_row, null); 
table.addRow(rowView); 
+0

OK - merci! Ça doit être la pièce qui me manquait. Faut-il créer un nouveau fichier individuel pour chacun de ces objets? C'est à dire. ai-je besoin d'un fichier pour le TableRow et un autre pour la cellule? Et si j'ai différents types de cellules (disons texte et dates), alors faut-il un fichier individuel pour chacun? Ou puis-je en quelque sorte mettre tous ces dans un seul fichier? Je demande parce que la première approche semble conduire à une avalanche de fichiers de disposition (j'ai environ 15 types de cellules différentes) donc je suis un peu inquiet de devoir maintenir tous ces fichiers ... – mmo

+0

Typiquement, j'ai eu un fichier pour chaque ligne, où chaque ligne de la table a le même ensemble de types de cellules. Fondamentalement, il suffit de penser à la plus grande composante qui peut toujours être gonflé ensemble. Aussi, avez-vous regardé les styles android? Si le seul but est de styliser une zone de texte différemment, alors cela pourrait être ce dont vous avez besoin: http://developer.android.com/guide/topics/ui/themes.html –

+0

Merci! Tu m'as fait partir! – mmo

Questions connexes