【问题标题】:How to set text color for all the elements from an ArrayList in Java?如何为 Java 中 ArrayList 中的所有元素设置文本颜色?
【发布时间】:2015-11-10 19:59:15
【问题描述】:

我以编程方式创建了 5 个单选组,每个组有 4 个单选按钮。每个单选按钮都代表一个问题的答案。所以我想这样做。当有人检查广播组的正确答案时,我想将它们全部添加到名为 correctAnswerRadiosArrayList 中。与错误的答案相同。我还在按钮上设置了OnClickListener。当有人按下按钮时,我还希望将所有正确答案设为绿色,将错误答案设为红色。使用此代码,我收到此错误:'java.lang.NullPointerException: Attempt to write to null array'。

这是我的代码:

RadioGroup[] answerGroup;
RadioButton[] answer;
Button finishButton;
RadioButton[] checkedRadioButton;
ArrayList<RadioButton> correctAnswerRadios;
ArrayList<RadioButton> wrongAnswersRadios;

    correctAnswerRadios = new ArrayList<>();
    wrongAnswersRadios = new ArrayList<>();
    answerGroup = new RadioGroup[5];
    answer = new RadioButton[4];

    int i = 0;
    for (Question qn : questions) {
        answerGroup[i] = new RadioGroup(this);
        int j = 0;
        for (Answer an : answers) {
            if (qn.getID() == an.getQuestion_id_answer()) {
                answer[j] = new RadioButton(this);
                answer[j].setText(an.getAnswer());
                answer[j].setId(j + 100);
                answer[j].setTag(String.valueOf(an.getCorrect_answer()));
                answerGroup[i].addView(answer[j]);

                answer[j].setOnClickListener(new View.OnClickListener() {
                    private boolean isChecked = true;
                    @Override
                    public void onClick(View v) {
                        for (int j = 0; j < answer.length; j++) {
                            checkedRadioButton[j] = ((RadioButton) v);
                            int CorrectAnswer = Integer.parseInt(checkedRadioButton[j].getTag().toString());
                            if (checkedRadioButton[j].isChecked() & CorrectAnswer == 1) {
                                correctAnswerRadios.add(checkedRadioButton[j]);
                            } else {
                                wrongAnswersRadios.add(checkedRadioButton[j]);
                            }
                        }
                    }
                });
                j++;
            }
        }
        linearLayout.addView(answerGroup[i]);
        i++;
    }

    finishButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            for (int i = 0; i < answerGroup.length; i++) {
                for (int j = 0; j < answer.length; j++) {
                    RadioButton correctRadio = correctAnswerRadios.get(j);
                    correctRadio.setTextColor(Color.GREEN);
                    RadioButton wrongRadio = wrongAnswersRadios.get(j);
                    wrongRadio.setTextColor(Color.RED);
                    answerGroup[i].getChildAt(j).setEnabled(false);
                }
            }
        }
    });

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 你想如果用户点击正确的答案,这个答案变成绿色,其余的红色,如果用户点击错误的答案,它变成红色,其余的2红1绿?
  • 不,我想要的是当有人按下按钮时,正确的检查答案变成绿色,错误的答案变成红色。就是这样!

标签: java android loops arraylist onclicklistener


【解决方案1】:

你需要初始化你的数组。例如:

checkedRadioButton = new RadioButton[size];

【讨论】:

  • 是的,你是对的。我已经做了。现在模拟器在启动时不会崩溃,当我尝试检查单选按钮时它会崩溃。这是错误:java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0。我能做什么?
  • 您需要初始化 checkRadioButton 数组 - 您没有成员。我没有看到任何类似于 checkRadioButton[0] = x. 的代码
  • 我认为你根本不需要 checkedRadioButton[j] - 你可以使用 answer[j]。
  • 拜托,你能说得更具体些吗?也许,你能帮我写一些代码吗?我想要的是当有人按下按钮时,正确的检查答案变成绿色,错误的答案变成红色。就是这样!
【解决方案2】:

像这样初始化checkedRadioButton

checkedRadioButton = new RadioButton[size];

并将您的 finishButton 侦听器方法更改为

 public void onClick(View v) {

//Disable buttons
 for (int i = 0; i < answerGroup.length; i++) {
    for (int j = 0; j < answer.length; j++) {

         answerGroup[i].getChildAt(j).setEnabled(false);

     }
 }
 //put button colors

 for(RadioButton correct: correctAnswerRadios){
  correct.setTextColor(Color.GREEN);
 }

 for(RadioButton wrong: wrongAnswersRadios){
  wrong.setTextColor(Color.RED);
 }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 2011-02-27
    • 1970-01-01
    • 2011-12-14
    相关资源
    最近更新 更多