2010-07-27 6 views
5

Ich konstruiere TableLayout dynamisch. Und ich brauche TableRow hat eine Lücke in bestimmten Spaltenposition.Android TableRow - Wie dynamisch zu einer bestimmten Position hinzufügen?

Zum Beispiel brauche ich Zeile hat ImageView auf 3 und 5 Position, nächste Zeile hat ImageView auf 1, 2, 4 Position. Ich versuche zu verwenden:

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); 

aber ich habe IndexOfBoundException zur Laufzeit.
ERROR/Android Runtime (771): Verursacht durch: java.lang.IndexOutOfBoundsException: index = 2 count = 0

Irgendwelche Vorschläge geschätzt würde.
Vielen Dank.

Antwort

4

Eigentlich scheint der Fehler auf den ersten Blick auf Ihren Code ziemlich logisch. Wenn Ihre Tabelle nicht aus xml erstellt wurde und als erforderliche Anzahl von Zeilen, wenn Sie eine Ansicht im Index 2 hinzufügen, ist dieser Index nicht vorhanden. Versuchen Sie, diese 2 durch eine 0 zu ersetzen, Sie werden sehen, dass es funktioniert. Sie müssen also nur die anderen Indexe leer ImageView hinzufügen, wenn Sie bei Ihren bleiben wollen.

+0

Serhy, danke für die Antwort. Aber vielleicht wissen Sie, wie ich die Anzahl der Spalten in einer Zeile angeben soll? Oder Anzahl der Zeilen und Spalten in einer Tabelle? Ich wollte nur addView (Ansicht, Index) ohne solchen Fehler ... – levkatata

+0

Wenn ich Sie richtig verstehe, möchten Sie Bilder in einer Zelle haben, dann nicht in der nächsten, dann ein Bild, dann nicht, ... und dann in der nächsten Zeile das Gegenteil, beginnend mit einer leeren Zelle? – Sephy

+0

Ja, Serhy, du hast Recht. Aber es gibt verschiedene solche Layouts, die ich erstellen muss, wie eine Raute, wie ein Kreuz, wie eine Zecke und so weiter. Ich habe deine Lösung ausprobiert, es funktioniert super! Aber ich habe bemerkt, dass die Zeit der Erstellung eines solchen Layouts von der Anzahl der erstellten Ansichten abhängt. Ich muss viele leere Ansichten erstellen ... – levkatata