2010-11-25 6 views
0

Je suis en train d'ajouter des lignes de table dynamiquement ...... Après mon code java:Dynamiquement ajouter des lignes à la TableLayout

TableLayout tl = (TableLayout) findViewById(R.id.tablerow); 
     /* Create a new row to be added. */ 
     TableRow tr = new TableRow(this); 
     tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
     /* Create a Button to be the row-content. */ 
     Button b = new Button(this); 
     b.setText("Dynamic Button"); 
     b.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
     /* Add Button to row. */ 
     tr.addView(b); 
     /* Add row to TableLayout. */ 
     tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 

Mon code XML est

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tablerow" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <TableRow> 
     <TextView 
      android:id="@+id/content" 
      android:singleLine="false" /> 
    </TableRow> 

</TableLayout> 

Mais je obtenir une erreur sur cette ligne:

final TableLayout tl = (TableLayout)findViewById(R.id.tablerow); 

erreur que je reçois est ne peut pas lancer de vue à TableLayout

Toute aide sera appréciée

+0

Pourquoi utilisez-vous le gonflage dynamique? setContentView() devrait déjà avoir fait tout le gonflement nécessaire. –

+0

S'il vous plaît jeter un oeil sur le code ci-dessus ... j'ai édité maintenant ... toujours la même erreur apparaît "Impossible de diffuser de vue à Tablelayout" –

+0

Post le fichier XML complet – techiServices

Répondre

1

Vous devez avoir android:layout_height et android:layout_width dans vos <TableRow> et <TextView> champs.

Ces deux propriétés sont requises.

0

Lors de la création d'une instance pour TableLayout vérifier ses contrôles doivent être android.widget ..

qui est le problème

TableLayout (android.widget) pas notre package

0

comment pouvez-vous jeter tablerow à tableLayout ici (TableLayout) findViewById (R.id.tablerow)? N'est-ce pas?

0

Il existe deux types différents de LayoutParams, TableRow.LayoutParams et TableLayout.LayoutParams.

L'IDE Eclipse ne génère pas d'erreur si vous n'utilisez pas le mauvais au mauvais endroit, mais l'interface utilisateur ne fonctionnera pas. Lorsque vous définissez les LayoutParams pour le TableRow et pour les vues dans le TableRow, assurez-vous que vous les définissez explicitement à la droite en utilisant un nom qualifié.

Exemple:

TableLayout tblServices = (TableLayout) findViewById(R.id.tblServices); 
TableRow row = new TableRow(this); 
row.setLayoutParams(new TableRow.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
TextView tvName = new TextView(this); 
tvName.setLayoutParams(new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
tblServices.addView(row, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 

, vous n'avez pas besoin de mettre les LayoutParams pour un bouton, si la suppression de cette ligne devrait aider.

0

Trop tard pour répondre, mais si quelqu'un cherche cela. J'ai eu le même problème et l'ai corrigé en appelant setContent() avant d'essayer de trouver la vue.

Questions connexes