Tabellenwerte in Array speichern und per JSON senden

Z

zauber3r

Erfahrenes Mitglied
23
Hi,

ich habe eine dynamische Tabelle, welche Daten per php von einem Mysql Server holt und sich danach aufbaut. Funktioniert wunderbar.

Die Daten können nun verändert werden vom Nutzer (eine Checkbox darf angeklickt werden.

Nun möchte ich die Daten zurück in die Datenbank schreiben, sprich einen neuen Array erstellen, mit den Inhalten aus den Tabellenzeilen und per JSON updaten.

Für diese spezifische Sache finde ich kein How-to, wo soll ich ansetzen?

danke

Edit: Screenshot von dem was auf dem Phone zu sehen ist.
Eine checkbox, deren name aus einem Array stammt, der wiederrum aus einer mysql abfrage.

Ich möchte nun die DB updaten, entsprechend ob die Checkbox gesetzt ist oder nicht.
Hab keine Ahnung wie ich die Ansprechen soll
 

Anhänge

  • 1.png
    1.png
    17,1 KB · Aufrufe: 195
Zuletzt bearbeitet:
irgendiwe sowas wie

Code:
Context context = new context();
Checkbox checkbox=new Checkbox(context);
...
...
...
if(checkbox.isChecked())
{
        //DB updaten

}



:biggrin:
 
hilft 0, es muss ein Array erstellt werden....
 
selbst ist der Mann. ..nen bisschen Eigeninitiative hilft. ...
 
Wo ist dein Problem genau? In der Erstellung des Arrays oder der Speicherung in der Datenbank?

Ersteres: einfach alle Checkboxen durchgehen, dann - wie Jaiel schon schrieb - den Checked-Status prüfen und anhand davon einen Array füllen. -> Galileo Computing :: Java ist auch eine Insel – 3.7 Arrays

Letzteres funktioniert ja im Wesentlichen ähnlich dem, wie du Daten ausliest - wahrscheinlich durch einen Webservice. -> PHP Update Data in MySQL
 
Mein Problem ist, wie spreche ich die Checkboxen an? Sie werden dynamisch erstellt und ich müsste ihnen eine ID zuweisen, damit ich sie nach und nach abfragen kann. Aber genau die ID Zuweisung bekomme ich nicht hin
 
Ein Schleife zum Durcharbeiten sähe grob so aus:
PHP:
for (int i = 0; i < deinLayout.getChildCount(); i++) {
                View v = deinLayout.getChildAt(i);

                if (v instanceof Checkbox) {
                    // hier prüfen, ob isChecked und je nachdem Arraydaten bereitstellen, ggf. muss hier V zu Checkbox gecasted werden
                }
            }
 
reneph schrieb:
Ein Schleife zum Durcharbeiten sähe grob so aus:
PHP:
for (int i = 0; i < deinLayout.getChildCount(); i++) {
                View v = deinLayout.getChildAt(i);

                if (v instanceof Checkbox) {
                    // hier prüfen, ob isChecked und je nachdem Arraydaten bereitstellen, ggf. muss hier V zu Checkbox gecasted werden
                }
            }
danke,
ich werde es nachher oder bei zeiten probieren,

was meinst du mit "zu checkbox gecasted werden"?

ich bin noch nicht lange allzulange dabei, deshalb die vllt etwas dummen fragen...
 
v ist in dem Beispiel von der Klasse View (Checkbox ist eine Unterklasse von View). Jedoch wird die Klasse View noch nicht die Funktion "isChecked" beinhalten, sondern erst die Klasse Checkbox.

Deshalb musst du v von View in Checkbox "umwandeln" - casten.

Also dann sowas:
PHP:
if(((Checkbox)v).isChecked()){
...
}
 
Code:
Am anfang...
    TableLayout tl;
    TableRow tr;
    TextView label;
    CheckBox cb;
Code:
public void onClickSenden (View view) {
        System.out.println("***Start Checkboxcheck***");
        int j = tl.getChildCount();
        System.out.println("Anzahl " + j );    // Anzahl der Checkboxen ermitteln
        for (int i = 0; i < tl.getChildCount(); i++) { 
            View v = tl.getChildAt(i);
            String itest = String.valueOf(i);
            System.out.println(itest);
            if (v instanceof CheckBox) {
                if(((CheckBox)v).isChecked()){
                    String str = (String) cb.getText();
                    System.out.println("String im Text" + str);
                }
                }
                }
            }
das habe ich erstmal, es kommt kein fehler, aber es passiert auch nichts.
die Anzahl der ermittelten Checkboxen ist immer eine zu viel.ö
Bsp: die Tabelle wird ja dynamisch erstellt, mit zb 3 Zeile (eine davon der Kopf und 2 zeilen anhand vorhandener Werte, also auch 2 Checkboxen)

Die Anzahl ist aber 3 und nicht nur 2, warum?
und in der if-Schleife um den Text auszulesen passiert gar nichts.

Edit:
Code:
    public void onClickSenden (View view) {
        System.out.println("***Start Checkboxcheck***");
        int j = tl.getChildCount();
        System.out.println("Anzahl " + j );    // Anzahl der Checkboxen ermitteln
        for (int i = 0; i < tl.getChildCount(); i++) {
            String itest = String.valueOf(i);
            System.out.println(itest);
            if (view instanceof CheckBox) {
                //CharSequence str;
                //str = cb.getText();    
                System.out.println("positiv");
                if(((CheckBox)view).isChecked()){
                }
                }
            System.out.println("negativ");
                }
            }
tl.getChildCount(); dieser Wert gibt die Anzahl der Reihen in den Table Layout und nicht die Anzahl der Checkboxen oder?
wie spreche ich die checkbox in der celle in der Tabelle (table layout tl) an?

oder gibt es wie ich gedacht habe, die möglichkeit eine ID an jede checkbox zu geben,
und alle checkboxen ID's durchzugehen?
 
Zuletzt bearbeitet:

Ähnliche Themen

B
Antworten
6
Aufrufe
1.051
jogimuc
J
R
Antworten
6
Aufrufe
1.011
swa00
swa00
A
Antworten
10
Aufrufe
1.919
swa00
swa00
Zurück
Oben Unten