Проблема в том, что вы не получаете взгляды, которые, как вы думаете, вы получаете.LayoutInflater.inflate()
, вызываемый с предоставленным корневым представлением, означает, что возвращаемое вам представление является ТАКИМ корневым представлением (не завышенным представлением).Метод, в котором вы вызываете его, надувает новый RadioButton и присоединяет его к группе, но возвращаемое значение (option_view) - это сама группа, а не отдельный элемент.Поскольку вам необходимо поиграть с представлением перед присоединением его к группе, я бы порекомендовал следующий код (который работает):
//I added these for posterity, I'm sure however you get these references is fine
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RadioGroup radio_group = new RadioGroup(this);
//Get the button, rename it, then add it to the group.
for(int i = 0; i < options.length(); i++) {
JSONObject option = options.getJSONObject(i);
RadioButton option_view = (RadioButton)vi.inflate(R.layout.poll_option, null);
option_view.setText(option.getString("response"));
radio_group.addView(button);
}
От редакции:
Только мои 0,02 доллара за такую простую схему, запускать процесс инфляции снова и снова в цикле может быть слишком много (инфляция стоит дорого).Вы можете легко создать тот же RadioButton
в коде и добавить его с помощью LayoutParams, например:
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
for (int i = 0; i < options.length(); i++) {
RadioButton option_view = new RadioButton(this);
option_view.setText(option.getString("response"));
radio_group.addView(option_view, params);
}
Этот код я не тестировал, но он должен быть довольно близок: p
Надеюсь, что поможет!