J'ai eu un problème étrange avec le remplacement d'une ligne de table du code.Table à langer AndroidLayout du code ne fonctionne pas
Mon code XML ressemble à ceci:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/columnheadings"
android:layout_height="wrap_content"
android:layout_width="fill_parent"/>
<ListView
android:id="@+id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:dividerHeight="2px"
/>
...
</LinearLayout>
Lorsque l'activité est créée, je peux insérer avec succès un TableRow au TableLayout "ColumnHeadings":
table = (TableLayout)findViewById(R.id.columnheadings);
table.removeAllViews();
TableRow tr = new TableRow(this);
TextView tv = new TextView(activity);
tv.setText("asdf");
tr.addView(tv);
table.addView(tr);
table.postInvalidate();
Le contenu (et width) des colonnes de la table sont calculées dynamiquement.
Maintenant, je veux également redessiner le TableLayout, quand il y a des mises à jour dans l'adaptateur de ListView. Pour ce faire, je crée l'adaptateur avec une référence à l'activité.
De l'intérieur de l'adaptateur, je peux changer avec succès, par ex. le texte d'une colonne.
Ce que j'essaie de le faire (sans succès):
TableLayout tableLayout = (TableLayout)activity.findViewById(android.app.R.id.columnheadings);
tableLayout.removeAllViews();
TableRow row=new TableRow(activity);
TextView tv = new TextView(activity);
tv.setText("test");
row.addView(tv);
tableLayout.addView(row);
tableLayout.postInvalidate();
Malheureusement, la seule chose qui se produit est une suppression de la ligne du tableau en cours. La nouvelle ligne n'est pas ajoutée à la tableLayout de l'adaptateur.
Des suggestions?