1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Wie passen layout-files und dynamische TableRows zusammen?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von bfink, 05.08.2010.

  1. bfink, 05.08.2010 #1
    bfink

    bfink Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    85
    Erhaltene Danke:
    15
    Registriert seit:
    15.05.2010
    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?
     
  2. Ylirebus, 02.03.2012 #2
    Ylirebus

    Ylirebus Neuer Benutzer

    Beiträge:
    12
    Erhaltene Danke:
    0
    Registriert seit:
    29.12.2011
    Schade , darauf hätte ich auch gerne eine Antwort gehabt ;-) - naja google ich mal weiter....:huh:
     
  3. ZegativeNero, 02.03.2012 #3
    ZegativeNero

    ZegativeNero Neuer Benutzer

    Beiträge:
    8
    Erhaltene Danke:
    0
    Registriert seit:
    02.03.2012
    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: 03.03.2012

Diese Seite empfehlen