2015-11-11 3 views
0

Я создал программно несколько радиостанций с 4 переключателями. Я установил OnClickListener на кнопку завершения, которую я создал тоже. Я хочу, чтобы кто-то нажал кнопку, чтобы установить все группы радиостанций с ArrayList с именем answerGroupList. Как я могу это сделать? Вот мой код:Как включить все группы радиостанций из списка массивов в Android?

List<RadioGroup> answerGroupList = new ArrayList<>(); 
    List<RadioButton> answerList = new ArrayList<>(); 

    int i = 0; 
    for (Question qn : questions) { 
     RadioGroup answerGroup = new RadioGroup(this); 
     answerGroupList.add(new RadioGroup(this)); 
     answerGroup.setId(i); 
     int j = 0; 
     for (Answer an : answers) { 
      if (qn.getID() == an.getQuestion_id_answer()) { 
       RadioButton answer = new RadioButton(this); 
       answerList.add(new RadioButton(this)); 
       answer.setId(j); 
       answer.setText(an.getAnswer()); 
       answerGroup.addView(answer); 
       j++; 
      } 
     } 
     linearLayout.addView(answerGroup); 
     i++; 
    } 

    finishButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      for (int i = 0; i < numberOfQuestions; i++) { 
       for (int j = 0; j < numberOfAnswers; j++) { 
        answerGroupList.get(j).setEnabled(false); // doesn't work 
       } 
      } 
     } 
    }); 

Спасибо!

+0

Edit: Или как установить все переключатели из 'ArrayList' именем' 'answerList включен? –

+0

Просто отредактируйте свой пост, не добавляйте комментарий прямо после него. Кроме того, что такое stacktrace? «не работает» недостаточно информации, к сожалению, – Smittey

+0

Извините, но я не могу отредактировать сообщение после его отправки. Это означает, что ничего не происходит, когда я нажимаю кнопку. –

ответ

0

Это не достаточно, чтобы использовать setEnabled(false) на всю radioGroup, вы должны перебрать каждый элемент в radioGroup и установить для каждого ребенка false.

интегрированы в ваш код будет что-то вроде:

for (int i = 0; i < numberOfQuestions; i++) 
{ 
    for (int j = 0; j < numberOfAnswers; j++) 
    { 
     for (int k = 0; k < answerGroupList.get(j).getChildCount(); k++) 
     { 
      ((RadioButton) answerGroupList.get(j).getChildAt(k)).setEnabled(false); 
     } 
    } 
} 
+0

Спасибо. Если я вношу это изменение, он говорит, что «переменная» answerGroupList «обращается изнутри внутреннего класса, чтобы быть объявлена ​​final». Если я объявляю его окончательным, я получаю эту ошибку: 'не может разрешить метод getChildAt (k)'. –

+0

Усально это означает, что если два метода видят одну и ту же локальную переменную, Java хочет, чтобы вы ее не изменяли. Однако вы, вероятно, этого не хотите. Попробуйте вместо этого сделать глобальную переменную. – Smittey

+0

Я просто попытался установить переменную 'answerGroupList' global, как это,' public ArrayList answerGroupList; 'но это не сработает. Та же проблема. Неужели я ошибаюсь? –

Смежные вопросы