Wie passen layout-files und dynamische TableRows zusammen?

B

bfink

Ambitioniertes Mitglied
15
ich würde gerne in meiner anwendung so eine gui machen:

Code:
Tabelle1
+-----------------------------+
|Fixe Zeile                   |
|-----------------------------|
|                             |
|   Tabelle2                  |
|   +---------------------+   |
|   |Fixe Zeile           |   |
|   |---------------------|   |
|   |Dynamischer Eintrag 1|   |
|   |...                  |   |
|   |Dynamischer Eintrag n|   |
|   |---------------------|   |
|   |Fixe Zeile           |   |
|   +---------------------+   |
|                             |
+-----------------------------+

jetzt bin ich blutiger android-anfänger und dachte mir, dass ich wohl alle elemente, die statisch sind direkt im layout-xml definieren kann und dann dynamisch die n einträge generiere, die sich zur laufzeit erst ergeben.

d.h. ich habe (vereinfachte darstellung)

Code:
<TableLayout>

	<TableRow>
	</TableRow>

	<TableLayout>
		<TableRow>
		<TableRow>
		[...]
		<TableRow>
	</TableLayout>

</TableLayout>

mein problem ist nun aber, dass ich keine ahnung habe, wie ich an das innere TableLayout-Objekt eine Row anhängen kann.

die beispiele, die ich im netz finde sind eigentlich immer trivial, d.h. ein TableLayout in das mit addView neu erzeugte rows gehängt werden. nur geschachtelt hab ich das noch nicht gesehen. ich denke mal ich werde nicht drum herumkommen, die tabelle händisch zur laufzeit zusammenzubauen statt via layout.xml, oder? oder kann ich in dem layout-file ankündigen hier wird mal ein weiteres TableLayout-Objekt kommen und das baue ich dann zur laufzeit zusammen, so dass ich weigstens die äussere tabelle via xml definieren kann?
 
Schade , darauf hätte ich auch gerne eine Antwort gehabt ;-) - naja google ich mal weiter....:huh:
 
Hallo,

das sollte so funktionieren:

1. Du gibst deiner Tabelle (in deinem Fall der Inneren) im XML File eine eindeutige ID:

Da die Zeilen ja per code generiert werden sollen bleibt diese Tabelle leer:
Code:
<TableLayout 
    android:id="@+id/mytable"
    android:layout_height="wrap_content"
    android:layout_width="match_parent">       
</TableLayout>
2. In deiner Activity läuft das Füllen deiner Tabelle dann in etwa so ab:
Code:
//..............


// Erzeugt eine Array-List welche die Werte beinhaltet:

ArrayList<String> mystrings = new ArrayList<String>();



//Fügt Werte zu der Array-List hinzu:

mystrings.add("Wert1");
mystrings.add("Wert2");
mystrings.add("Wert3");
mystrings.add("Wert4");
mystrings.add("Wert5");



//Sucht das TableLayout in deiner XML-Datei: 
                   
TableLayout table = (TableLayout)findViewById(R.id.mytable);



//Zählt von 0 aufwärts bis die Anzahl der in der ArrayList eingefügten //Elemente erreicht ist:

for (int i=0; i<mystrings.size(); i++){



//Erzeugt eine neue Tabellenzeile:

TableRow zeile = new TableRow(this);



//Erzeugt ein neues Textfeld:

TextView eintrag = new TextView(this);

//Fügt die Werte der ArrayList in das eben erzeugte Textview ein
//Da wir uns in einer for Schleife befinden, wird für i bei jedem Durchlauf ein
//höherere Wert eingesetzt:

eintrag.setText(mystrings.get(i));



//Fügt das Textfeld in die, ebenfalls in der Schleife erzeugte, Tabellenzeile //ein:

zeile.addView(eintrag);



//Zu guter letzt wird die Zeile in die Tabelle hinzugefügt:

table.addView(zeile);


}

//..............
Die "umschließende Tabelle" erzeugst Du einfach statisch wie gewohnt, d.h. XML File etc pp.

Zusätzlich lässt sich noch für die dynamisch erzeugten Zeilen ein eigenes Layoutfile erzeugen welches via LayoutInflater (mal googlen) das aussehen bestimmt...

Gruß
 
Zuletzt bearbeitet:

Ähnliche Themen

M
Antworten
3
Aufrufe
167
moin
M
M
  • MikelKatzengreis
Antworten
5
Aufrufe
129
swa00
swa00
L
Antworten
4
Aufrufe
1.337
lonnie9020
L
Zurück
Oben Unten