2016-05-11 4 views
0

Ich möchte Wert für dynamisch hinzugefügt CheckBox, aber wenn ich sehen möchte, wenn einer meiner checkBox.isChecked(); es reagiert nur, wenn ich die letzte Checkbox ankreuze! Hier ist mein Behälter.Wie ID aus dynamisch hinzugefügtem Kontrollkästchen erhalten und sie Wert

for (String answer : multiMap.get(questionFromMultiMap)) 
     { 

      i++; 
      et_button = (CheckBox) getLayoutInflater().inflate(R.layout.numberofchoices, null); 
      et_button.setText(answer); 
      et_button.setId(i); 
      container.addView(et_button); 
      listOfChoice.add(answer); 


     } 

Ich will es so, dass geprüft überprüfen ist:

btnCorrect.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     if (et_button.isChecked()){ 
      System.out.println(et_button.getId()); 
     }else{ 
      System.out.println("pouet"); 
     } 

     } 
    }); 

nicht richtige Antwort auf Google finden Hat! Danke für Hilfe

+0

Überprüfen Sie diese Antwort: http://stackoverflow.com/questions/8460680/how-can-i-assign-an-id-to-a-view-programmatically –

+0

Ich habe diese Antwort bereits überprüft, ich habe versucht, aber ich kann 't machen dies funktioniert:/ –

+0

oder Sie können Tags verwenden http://StackOverflow.com/Questions/7455897/How-do-I-to-Findviewbytag –

Antwort

1

Wenn Sie et_button.isChecked() aufrufen, wird dies in der letzten aufgeblähten Ansicht aufgerufen, weil Sie es bei jeder Iteration der Schleife überschreiben. Sie sollten sie in einer Liste hinzufügen statt, und dann in der OnClickListener Prüfung, die man überprüft:

List<CheckBox> list = new LinkedList<>(); //this should be visible from onClickListener, so it should be an instance field 

for (String answer : multiMap.get(questionFromMultiMap)) { 
     i++; 
     CheckBox et_button = (CheckBox) getLayoutInflater().inflate(R.layout.numberofchoices, null); 
     et_button.setText(answer); 
     et_button.setId(i); 
     list.add(et_button); 
     container.addView(et_button); 
     listOfChoice.add(answer); 
    } 

btnCorrect.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     for(CheckBox cb : list) { 
     if (cb.isChecked()){ 
      System.out.println(cb.getId()); 
     }else{ 
      System.out.println("pouet"); 
     } 
     } 
    } 
}); 

habe es nicht getestet, aber es sollte funktionieren.

+0

Es funktioniert, so dass Sie nur jedes Kontrollkästchen in einer Liste hinzufügen, aber ich verstehe nicht die Schleife für (CheckBox cb: Liste) können Sie bitte erklären? –

+0

Die for-Schleife wird benötigt, weil jede checbox ein anderes Objekt mit seiner ID ist, ohne Schleife prüft man die ID des letzten hinzugefügten Objekts, wobei die Schleife für jede hinzugefügte checbox überprüft wird, wenn sie angekreuzt ist. Bitte denken Sie daran, die Antwort zu akzeptieren, wenn es für Sie funktioniert! –

Verwandte Themen