2016-06-16 9 views
0

ここに私のチェックボックスのコードがあります。動的に作成されたチェックボックスからチェックボックスの値を取得する方法

if (type.equalsIgnoreCase("checkbox")){ 

       String checkBoxText = dataObj.getString("checkboxname"); 
       checkBox = dynamicviews.CreateCheckbox(context,value,checkBoxText); 

       id = R.id.gl + i + 9; 
       if (j == 2) { 
        j = 0; 
        tableRow = new TableRow(context); 
        tableRow.setPadding(0, 10, 0, 10); 
        tableLayout.addView(tableRow); 
       } 

       j++; 
       tableRow.addView(checkBox); 
       checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
        @Override 
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

         String string = checkBox.getText().toString(); 
         Log.i("checkbox",string); 
        } 
       }); 
      } 

とコードの下のチェックボックス

public CheckBox CreateCheckbox(Context context,String checkName,String checkBoxText){ 
    checkBox = new CheckBox(context); 
    checkBox.setGravity(Gravity.CENTER); 
    checkBox.setTextAlignment(Gravity.CENTER); 
    checkBox.setText(checkBoxText); 
    checkBox.setTextColor(Color.WHITE); 
    checkBox.setBackgroundResource(R.drawable.custom_rdbtn); 
    checkBox.setButtonDrawable(new StateListDrawable()); 
    checkBox.setCompoundDrawablePadding(10); 
    return checkBox; 
} 

を作成し、問題が各1の最後の作成したチェックボックスの値を取得しています。です

+0

を得ました。 –

答えて

0

あなたはそのsetOnCheckedChangeListenerを設定、BEFORE tableRowcheckBoxobjectを追加している - それが唯一あなたが作成した最後のcheckBoxのために動作します。この問題を解決するには

、あなたは単に最初setOnCheckedChangeListenerを設定し、tableRow.addView(checkBox)を呼び出す行う必要があります - 以下のコードを参照してください。それを試してみる

//first, set the setOnCheckedChangeListener on this checkBox, 
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)  
    { String string = buttonView.getText().toString(); 
     Log.i("checkbox",string); 
    } 
}); 
//only now do you add the view 
tableRow.addView(checkBox); 

を、私はそれが役に立てば幸い。

+0

いいえ、私のために働いていません –

+0

注目。 'checkBox.getText()'の代わりに、 'buttonView.getText()'でなければなりません。 'onCheckedChanged'メソッドは、チェック状態が変更された' checkBox'ビュー( 'CompoundButton')を渡します。私はそれに応じてコードを更新し、それは動作するはずです。最大の問題は、リスナを設定する前に 'checkBoxobject'を追加することでした。 – ishmaelMakitla

1
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
        @Override 
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

         String string = buttonView.getText().toString(); 
         Log.i("checkbox",string); 


        } 
       }); 

私はあなたが `ArrayListの `のチェックボックスのインスタンスを格納しようとすることができソリューション

関連する問題