Dynamisch eine TableRow erstellen

  • 2 Antworten
  • Neuester Beitrag
Diskutiere Dynamisch eine TableRow erstellen im Android App Entwicklung im Bereich Betriebssysteme & Apps.
A

Andrez

Fortgeschrittenes Mitglied
Hi Leute,

ich hatte eigentlich vor, dass ich eine Tabelle erstelle. Wenn ich auf einen Button in der ActionBar tippe soll eine neue Reihe erstellt werden.
Ich habe 2 Dateien: MainActivity.java und Row.java. Wenn ich die Reihe in der MainActivity erstelle funktioniert es. Da es jedoch immer mehr Code wurde habe ich die Row.java erstellt um eine Instanz von der Reihe zu haben. Entweder bekomme ich eine NullPointerEcxeption oder es passiert nichts wenn ich den Button berühre. Könntet ihr bitte mal über den Code schauen und gucke wo der Fehler liegt?
MainActivity.java
Code:
package com.example.tabletest;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TableLayout;

public class MainActivity extends Activity {

	TableLayout tl;
	Context context= this;
	int c = 0;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		tl = (TableLayout) findViewById(R.id.myTableLayout);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	public void createRow() {
		this.c++;
		Row tr = new Row(context);
		tl.addView(tr);
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.action_hinzufuegen:
			createRow();
			break;

		default:
			break;
		}
		return true;
	}
}
Row.java
Code:
package com.example.tabletest;

import android.content.Context;
import android.widget.EditText;
import android.widget.TableRow;

public class Row extends TableRow {

	public Row(Context context) {
		super(context);
		TableRow rowP = new TableRow(context);
		rowP.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
				LayoutParams.WRAP_CONTENT));
		EditText et = new EditText(context);
		EditText et2 = new EditText(context);
		EditText et3 = new EditText(context);
		EditText et4 = new EditText(context);
		et.setEms(3);
		et.setHint("S1");
		et2.setEms(3);
		et2.setHint("S2");
		et3.setEms(3);
		et3.setHint("S3");
		et4.setEms(3);
		et4.setHint("S4");
		rowP.addView(et);
		rowP.addView(et2);
		rowP.addView(et3);
		rowP.addView(et4);
	}
}
Großes Dankeschön im Vorraus!!

Der ursprüngliche Beitrag von 17:26 Uhr wurde um 17:40 Uhr ergänzt:

Hat sich erledigt...war anscheinend ein Problem mit dem Context :confused2:
 
A

amfa

Experte
Und das funktioniert?
Du fügst zwar deine Row zur Tabelle hinzu, aber irgendwie seh ich noch nicht dass dann auch die richtigen Elemten in der Tabelle erscheinen könnten.

Warum baust du eine neue TableRow in deinem Construktor.
Row ist doch schon selbst eine TableRow.

Und in deinem layout taucht da wirklich eine neue Reihe in der Tabelle auf mit den EditTexts?
 
A

Andrez

Fortgeschrittenes Mitglied
Ich habe die Klasse noch überarbeitet, unter anderem die Vererbung von der TableRow rausgenommen, hatte irgendeinen krassen Denkfehler drin XD bin halt noch ein Anfänger :(
 
Ähnliche Themen - Dynamisch eine TableRow erstellen Antworten Datum
3
11