2010-07-27 9 views
5

Je construis TableLayout dynamiquement. Et j'ai besoin de TableRow a un écart dans la position de certaines colonnes. Par exemple, j'ai besoin de rangée a ImageView sur 3 et 5, la prochaine rangée a ImageView sur 1, 2, 4 position. J'essaie d'utiliser:Android TableRow - Comment ajouter View dynamiquement à certaine position?

TableRow row1 = new TableRow(this); 
    row1.addView(new ImageView(this), 2); 
    row1.addView(new ImageView(this), 4); 
    mTable.addView(row1); 
    TableRow row2 = new TableRow(this); 
    row2.addView(new ImageView(this), 0); 
    row2.addView(new ImageView(this), 1); 
    row2.addView(new ImageView(this), 3); 
    mTable.addView(row2); 

mais j'ai obtenu IndexOfBoundException au moment de l'exécution.
ERREUR/AndroidRuntime (771): Causé par: java.lang.IndexOutOfBoundsException: index = 2 count = 0

Toutes les suggestions seraient appréciés.
Merci.

Répondre

4

En fait, l'erreur semble assez logique à première vue sur votre code. À moins que votre table ne soit créée à partir de xml et en tant que nombre requis de lignes, lorsque vous ajoutez une vue à l'index 2, cet index n'existe pas. Essayez de remplacer ce 2 par un 0, vous verrez que cela fonctionne. Il vous suffit donc d'ajouter ImageView vide les autres index si vous voulez coller à la vôtre.

+0

Serhy, merci de répondre. Mais, peut-être, vous savez comment devrais-je spécifier la quantité de colonnes dans une rangée? Ou quantité de lignes et de colonnes dans un tableau? Je voulais juste utiliser addView (view, index) sans une telle erreur ... – levkatata

+0

Si je vous comprends bien, vous voulez avoir des images dans une cellule, puis pas dans la suivante, puis une image, puis pas ... et puis dans la ligne suivante, le contraire, en commençant par une cellule vide? – Sephy

+0

Oui, Serhy, tu as raison. Mais il y a différents types de disposition que j'ai besoin de créer, comme un losange, comme une croix, comme une tique et ainsi de suite. J'ai essayé votre solution, ça marche très bien! Mais j'ai remarqué que le temps de création d'une telle mise en page dépend de la quantité de vues que je crée. Je dois créer de nombreuses vues vides ... – levkatata

Questions connexes