2016-05-11 13 views
0

動的に追加されたCheckBoxの値を取得したいのですが、私がcheckBox.isChecked();私は最後に作成されたチェックボックスをチェックすると応答します。ここに私のコンテナがあります。動的に追加されたチェックボックスとその値からIDを取得する方法

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); 


     } 

私はそれがそのように確認されています確認したい:

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"); 
     } 

     } 
    }); 

Googleで正しい答えを見つけることができませんでした! ありがとうございました

+0

この回答を確認してください:http://stackoverflow.com/questions/8460680/how-can-i-assign-an-id-to-a-view-programmatically –

+0

私はすでにこの回答をチェックしていますが、私はできます/ –

+0

またはタグを使用することができますhttp://stackoverflow.com/questions/7455897/how-do-i-to-findviewbytag –

答えて

1

これは、最後の膨らんだビューで呼び出されるet_button.isChecked()を呼び出すと、ループの繰り返しごとに上書きされるためです。代わりに、リストにそれらを追加して、チェックされている1 onClickListenerチェックでなければならない :

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"); 
     } 
     } 
    } 
}); 

はそれをテストしていませんが、それは動作するはずです。

+0

それは働いているので、リストに各チェックボックスを追加するだけですが、(CheckBox cb:list)のループを理解できません。 –

+0

すべてのchecboxはIDを持つ別のオブジェクトであるため、追加された最後のオブジェクトのIDをチェックしているループはありません。 あなたの答えがあれば、それを受け入れることを検討してください! –

関連する問題