Hi, ich will dynamisch Zeilen in eine TableLayout ein- / anfügen.
Mein Code sieht so aus:
protected TableLayout tbl;
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d(TAG, "onCreate");
super.onCreate(savedInstanceState);
setContentView(R.layout.doser_setup_log);
tbl = (TableLayout) findViewById(R.id.tbl_view_list);
List<ViewFillingDataset> listeFillings = act.getListViewFilling(this);
ViewFillingDataset viewFillingDataset = null;
TableRow tr = new TableRow(this);
tr.setLayoutParams(new LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
tr.setGravity(Gravity.CENTER_VERTICAL);
for (int i=0; i < listeFillings.size(); i++){
viewFillingDataset = listeFillings.get(i);
TextView txv = new TextView(this);
txv.setId(i);
Drawable img = getBaseContext().getResources().getDrawable(android.R.drawable.ic_menu_more);
txv.setCompoundDrawablesWithIntrinsicBounds( img, null, null, null);
txv.setText("Text");
txv.setOnClickListener(onClickListener);
CheckBox chb = new CheckBox(this);
chb.setId(i);
tr.addView(txv);
tr.addView(chb);
}
tbl.addView(tr); ...} ...}```
Was passiert ist, dass die Zeilen nebeneinander dargestellt werden, wovon ich aber nur 1,5 Zeilen sehe, da der Platz nicht breiter ist.
**Natürlich sollen die Zeilen untereinander. Aber das bekomme ich nicht hin und möchte deshalb fragen, ob mir jemand weiterhelfen kann?!**
Nach meiner Logik müsste die letzte Zeile tbl.addView(tr) in die for Schleife, weil ja jede darin erzeugte Zeile nacheinander angefügt werden soll.
Aber dies erzeugt leider eine Fehlermeldung.
> E/AndroidRuntime(28643): Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
Ich denke mir, ich muss womöglich die Zeilen tr in irgend etwas reinpacken, in eine Liste oder so, und diese dann an tbl anhängen. Aber trotz Rumprobierens habe ich keine Lösung gefunden.
Über Hilfe und sachdienliche Hinweise würde ich mich freuen.