Bonjour à tous!
voila mon probleme:
j'utilise un table layout pour afficher des données structurées dans un tableau à deux colonnes.
l'entete d'un tableau (un tablerow) est écrit en dur dans le xml, et les lignes de données sont construites dynamiquement au chargement de mon activity
chaque ligne est composé de deux textview, ayant le même weight.
code xml coresspondant au tableau:
ensuite dans l'activity je boucle sur une collection pour charger les lignes de données
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <TableLayout android:id="@+id/tableTravaux" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#4083BD"> <TableRow> <TextView android:text="Travaux" android:textColor="#FFFFFF" android:gravity="center" android:background="#4083BD" android:layout_weight="1"/> <TextView android:text="Ressources" android:textColor="#FFFFFF" android:gravity="center" android:background="#4083BD" android:layout_weight="1"> </TextView> </TableRow> </TableLayout>
jusque la tout va bien, mes données s'affiche, c'est moche mais ca s'affiche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 table = (TableLayout) findViewById(R.id.tableTravaux); for (Tache t : mestaches) { // create a new TableRow TableRow row = new TableRow(this); TextView tvTrav = new TextView(this); tvTrav.setText(t.getLibelle()); TextView tvRess = new TextView(this); String users = "TODO recup users"; tvRess.setText(users); row.addView(tvTrav); row.addView(tvRess); table.addView(row); }
si je veut ensuite applique un weight a mes textView pour que chaque colonne ai la même largeur, je rajoute ce bout de code
et la c'est le drame, mes données ne s'affichent plus. si j'applique le layoutparams a un seul élément, seul l'autre s'affiche. a noter que j'ai tester toutes les combinaisons de paramètre entre fill_parent, match_parent, tout ca, sans succès.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 table = (TableLayout) findViewById(R.id.tableTravaux); for (Tache t : mestaches) { // create a new TableRow TableRow row = new TableRow(this); TextView tvTrav = new TextView(this); tvTrav.setText(t.getLibelle()); TextView tvRess = new TextView(this); String users = "TODO recup users"; tvRess.setText(users); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); params.weight= 1.0f; tvTrav.setLayoutParams(params); tvRess.setLayoutParams(params); row.addView(tvTrav); row.addView(tvRess); table.addView(row); }
j'ai aussi essayer de placer ce bout de code apres le row.addview, la j'ai un classCastException
j'ai aussi essayer d'ajouter le layoutparam directement en paramètre dans le row.addView, toujours pareil.
j'ai aussi essayer de créer deux objets layoutParam, un par textView au cas ou, toujours pareil.
Bref je suis un peu court d'idées, j'attend vos suggestions avec impatience
merci d'avance!
Partager