Dynamisk Table

Diskussion i 'Frågor, support och diskussion' startad av peterthegreat, 12 aug 2010.

  1. peterthegreat

    peterthegreat Kid Droid Medlem

    Blev medlem:
    19 dec 2009
    Inlägg:
    78
    Mottagna gillanden:
    0

    MINA ENHETER

    Tjenare.
    Jag är en erfaren programmerare C++,C#, ASP.NET xhtml javascript blablabla ännu fler språk etc men är ny på både Java och Android-dev.

    Det jag vill göra är att dynamiskt lägga till table-rader med hjälp av en knapp men får inte det att fungera. Jag har en simpel layout som ser ut såhär:

    PHP:
    <?xml version="1.0" encoding="utf-8"?>

    <LinearLayout android:id="@+id/LinearLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
        <TableLayout android:id="@+id/mainTable" android:layout_width="wrap_content" android:layout_height="wrap_content" android:tag="mainTable">
            <TableRow android:id="@+id/TableRow01" android:layout_width="wrap_content" android:layout_height="wrap_content">
                <TextView android:text="Namn" android:id="@+id/TextView01" android:layout_width="100pt" android:layout_height="wrap_content"></TextView>
                <TextView android:text="Antal" android:id="@+id/Header2" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
            
            </TableRow>
        </TableLayout>
    </LinearLayout>
    och koden kommer här:
    PHP:
    package com.Test;

    import android.app.Activity;
    import android.content.Context;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.View.OnKeyListener;
    import android.widget.*;

    public class 
    Test extends Activity {
        
    /** Called when the activity is first created. */
        
    @Override
        
    public void onCreate(Bundle savedInstanceState) {
            
    super.onCreate(savedInstanceState);
            
            
            
    setContentView(R.layout.main);
            
            
    TableLayout table = (TableLayout)findViewById(R.id.mainTable);
            
    table.addView(FormRow());
        }
        
        
        private 
    OnKeyListener EditTextNoEnter() {
            
            
    OnKeyListener keyListener = new OnKeyListener() {
                public 
    boolean onKey(View vint keyCodeKeyEvent event) {
                    
    // If the event is a key-down event on the "enter" button
                    
    if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
                            (
    keyCode == KeyEvent.KEYCODE_ENTER)) {
                    return 
    true;
                    }
                return 
    false;
                }

            };
            
            
        
            
            return 
    keyListener;
        
        }
        
        private 
    TableRow FormRow() {
            
            final 
    TableRow row = new TableRow(this);
            final 
    EditText textName = new EditText(this);
            
    textName.setHint("Vara");
            
    textName.setWidth(200);
            
    textName.setOnKeyListener(EditTextNoEnter());
            
            
            final 
    EditText textAmount = new EditText(this);
            
    textAmount.setText("1");
            
    textAmount.setWidth(30);
            
    textAmount.setOnKeyListener(EditTextNoEnter());
            
            final 
    Button buttonAdd = new Button(this);
            
    buttonAdd.setText("OK");
            
    buttonAdd.setOnClickListener(new OnClickListener(){
                public 
    void onClick(View v) {
                    
    TableLayout table = (TableLayout)findViewById(R.id.mainTable);
                    
    table.addView(row);
                }
            });
            
            final 
    CheckBox check = new CheckBox(this);
            
    check.setVisibility(0);
            
            return 
    row;
        }
    }
    Det jag har gjort är en funktion för att lägga till en rad till den redan existerande tabellen, men jag vet inte exakt hur jag ska gå till väga för att få tag på tabellen, lägga till en rad och sen få det att visas på skärmen. Jag har googlat en massa men hittar inget konkret som får det att funka. :/

    Hur gör man? Kanske nån har nått exempel bara hur man dynamiskt får tag på en View och gör nått med den som visas på skärmen? Typ kanske ändra designen eller nått bara.
     
  2. yrara

    yrara Teen Droid Medlem

    Blev medlem:
    30 sept 2009
    Inlägg:
    428
    Mottagna gillanden:
    8

    MINA ENHETER

    Din kod ser ut att vara på rätt väg, men i FormRow har du ju bara

    Kod:
    final TableRow row = new TableRow(this); 
    
    ...
    
    return row;
    
    Så det du får tillbaka är ju en helt tom rad.

    Du lägger ju aldrig till de andra objekten till raden...?
     
  3. peterthegreat

    peterthegreat Kid Droid Medlem

    Blev medlem:
    19 dec 2009
    Inlägg:
    78
    Mottagna gillanden:
    0

    MINA ENHETER

    Shit att jag missade att göra det, va klantigt av mig. :S Jag var helt inställd på att jag hade förtått grunden fel eller nått så jag inte såg det mest basiska. :P Tack för hjälpen. :D
     
  4. yrara

    yrara Teen Droid Medlem

    Blev medlem:
    30 sept 2009
    Inlägg:
    428
    Mottagna gillanden:
    8

    MINA ENHETER

    Alltid surt när man inte ser det mest basiska.

    Äh, det var inget, jag är bara full. Shysst att det funkar för dig.