Comment append des lignes dynamicment dans la présentation de table

J’ai certaines données dans sqllite et il se met à jour à chaque fois, je clique sur le bouton Enregistrer et je veux afficher les données dans une disposition de tableau pour append plus de lignes pour les données mises à jour.

J’ai un certain code mais il ne montre que les données mises à jour en remplacement des données précédentes et je souhaite append plus de lignes à mesure que les données sont mises à jour.

Je sais que ce n’est que pour append une ligne à la présentation de la table, mais comment puis-je append plus de lignes?

TableLayout tl=(TableLayout)findViewById(R.id.maintable); TableRow tr1 = new TableRow(this); tr1.setLayoutParams(new LayoutParams( LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); TextView textview = new TextView(this); textview.setText(data); //textview.getTextColors(R.color.) textview.setTextColor(Color.YELLOW); tr1.addView(textview); tl.addView(tr1, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 

La façon dont vous avez ajouté une ligne dans la disposition de la table vous permet d’append plusieurs instances de TableRow dans votre object tableLayout

 tl.addView(row1); tl.addView(row2); 

etc…

Voici la technique que j’ai trouvée après quelques essais et erreurs qui vous permettent de préserver vos styles XML et d’éviter les problèmes liés à l’utilisation de (c.-à-d. . Aucun new TableRow() runtime new TableRow() ou new TextView() n’est requirejs.

Code

Note: Ici, CheckBalanceActivity est un exemple de classe d’ Activity

 TableLayout table = (TableLayout)CheckBalanceActivity.this.findViewById(R.id.atsortingb_table); for(ResourceBalance b : xmlDoc.balance_info) { // Inflate your row "template" and fill out the fields. TableRow row = (TableRow)LayoutInflater.from(CheckBalanceActivity.this).inflate(R.layout.atsortingb_row, null); ((TextView)row.findViewById(R.id.atsortingb_name)).setText(b.NAME); ((TextView)row.findViewById(R.id.atsortingb_value)).setText(b.VALUE); table.addView(row); } table.requestLayout(); // Not sure if this is needed. 

atsortingb_row.xml

 < ?xml version="1.0" encoding="utf-8"?>     

Vous pourriez mieux utiliser un ListView avec un CursorAdapter (ou SimpleCursorAdapter ).

Celles-ci sont conçues pour afficher les lignes d’une firebase database sqlite et permettent d’actualiser avec une programmation minimale de votre part.

Edit – voici un didacticiel impliquant SimpleCursorAdapter et ListView, y compris un exemple de code.

Vous le faites bien; chaque fois que vous avez besoin d’append une ligne, tout simplement nouveau TableRow() , etc. Il peut être plus facile pour vous de inflate la nouvelle ligne à partir de XML .

Solution 1. Définissez votre TableLayout tl comme variable de membre de classe, appelez uniquement TableLayout tl=(TableLayout)findViewById(R.id.maintable); quand vous initiez le cours. Lorsque vous cliquez sur le bouton, utilisez tl directement, par exemple. tl.addView (row), n’appelez plus FindViewById. La nouvelle ligne suivante ne remplacera donc pas la nouvelle ligne précédente.

Solution 2. Chaque fois que vous cliquez sur le bouton, cliquez sur enregistrer vos données mises à jour dans un tableau, puis restituer l’intégralité de la disposition de la table par boucle dans le tableau.

Essayer
new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));

au lieu de

new LayoutParams( LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));