I have definiation below of radiogroup with radiobuttons. How properly implement onClickListener ? I got ArrayIndexOutOfBoundsException. I don't know what is wrong.
public void createRadioButton(Integer amount, LinearLayout layout, Integer text) {
AppCompatTextView txt = new AppCompatTextView(activity);
AppCompatButton btn = new AppCompatButton(activity);
btn.setText("Click");
txt.setText(text);
final AppCompatRadioButton[] rb = new AppCompatRadioButton[amount];
final RadioGroup rg = new RadioGroup(activity);
rg.setOrientation(RadioGroup.VERTICAL);
for( i=0; i<amount; i++){
rb[i] = new AppCompatRadioButton(activity);
rg.addView(rb[i]);
rb[i].setId(i + 100);
rb[i].setText("Test " + i);
}
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int selectedId = rg.getCheckedRadioButtonId();
rb[i] = (AppCompatRadioButton) activity.findViewById(selectedId);
Toast.makeText(activity, "VALUE" rb[i].getText(), Toast.LENGTH_SHORT).show();
}
});
layout.addView(txt);
layout.addView(rg);
layout.addView(btn);
}
for( i=0; i<amount; i++){
rb[i] = new AppCompatRadioButton(activity);
rg.addView(rb[i]);
rb[i].setId(i + 100);
rb[i].setText("Test " + i);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int selectedId = rg.getCheckedRadioButtonId();
rb[i] = (AppCompatRadioButton) activity.findViewById(selectedId);
Toast.makeText(activity, "VALUE" rb[i].getText(), Toast.LENGTH_SHORT).show();
}
});
}
If you want to add a onclicklistener for each item that you loop over, you need to extend your for loop so it also iterates over your onclicklistener, like this.