2016-06-16 12 views
2

Ich arbeite an einem Programm in Android Studio. Ich versuche, die Werte von mehreren Checkboxen (35) zu bekommen und sie in ein JSON zu setzen, also kann ich es an einen Server senden. Hier ist die SetMethod die ausgewählten Werte des Kontrollkästchen zu erhalten:Wie bekomme ich die Werte von mehreren Kontrollkästchen und sende Werte an den Server in Android

private void setExtensionForwardNumber(){ 

    priorityResponse.priorityOne.getTimeTable().mon = verifyCheckbox(priorityOneMon); 
    priorityResponse.priorityOne.getTimeTable().tue = verifyCheckbox(priorityOneTue); 
    priorityResponse.priorityOne.getTimeTable().wed = verifyCheckbox(priorityOneWed); 
    priorityResponse.priorityOne.getTimeTable().thu = verifyCheckbox(priorityOneThur); 
    priorityResponse.priorityOne.getTimeTable().fri = verifyCheckbox(priorityOneFri); 
    priorityResponse.priorityOne.getTimeTable().sat = verifyCheckbox(priorityOneFri); 
    priorityResponse.priorityOne.getTimeTable().sun = verifyCheckbox(priorityOneSun); 
    String s = priorityResponse.toJsonObject(); 
    setForwardExternalFragment(s); 

} 

Hier ist die Funktion, wenn das Kontrollkästchen überprüft aktiviert ist oder nicht:

private boolean verifyCheckbox(CheckBox checkbox) { 
    boolean selected = checkbox.isChecked(); 
    if(selected) 
     checkbox.setChecked(true); 
    else 
     checkbox.setChecked(false); 
    return selected; 
} 

Ich versuchte, nicht um die Funktion zu verwenden verifyCheckbox , und ich habe checkbox.isChecked() verwendet, aber ich habe das gleiche Ergebnis.

Das Problem ist, wenn ich den Wert auf dem Server erhalte, bekomme ich gemischte Werte. Beispiel: Wenn ich mon, wed, fri, sun überprüft habe, sind die ausgewählten Werte auf dem Server: mon, tue, wed, thu, sun. Was habe ich falsch gemacht?

Antwort

0

Eine Sache tun. Hängen Sie für jede Checkbox einen Check-Listener an und hängen Sie die Checkbox-Werte an eine globale Variable an. Und sende die angehängten Werte an den Server.

String str; //global variable. 

priorityOneTue = (CheckBox)findViewById(R.id.priorityOneTue); 

priorityOneTue.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(RadioGroup group, int checkedId) { 
     str += "tue"; 
    } 

}); 

Dann str an den Server senden

setForwardExternalFragment(str); 
+0

, aber ich habe 35 Kontrollkästchen. Ich denke nicht, dass das die gute Methode ist, für jede Checkbox zu tun. – ruru

+0

Dies ist die korrekte Art der Codierung, wenn Sie die Reihenfolge benötigen, in der jedes Kontrollkästchen aktiviert ist. – Swathin

+0

Ich hoffe, die Antwort, die ich gab, ist die, die Sie suchen. Vielen Dank. – Swathin

Verwandte Themen