如何将RadioButtons设置为仅在多次单击后才增加分数一次?

时间:2017-08-20 06:39:40

标签: android radio-button

我目前的问题是我已经为我的电台组中的每个单选按钮设置了一个评分系统,但是当我多次单击单选按钮或更改我的答案时,分数会不断增加。如何设置它以便在单击单选按钮时分数仅增加一次,当答案更改时,它将显示仅选择新选项的分数?

public class MainActivity extends AppCompatActivity {
int score = 0;
public TextView tv;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tv = (TextView)findViewById(R.id.textView);
}
public void onRadioButtonClicked(View view) {
    //is the current radio button now checked?
    boolean checked = ((RadioButton) view).isChecked();

    //now check which radio button is selected
    //android switch statement
    switch (view.getId()) {
        case R.id.radioButton:
            if (checked)
                score += 1;
            break;
        case R.id.radioButton2:
            if (checked)
                score += 1;
            break;
        case R.id.radioButton3:
            if (checked)
                score += 3;
            break;
        case R.id.radioButton4:
            if (checked)
                score += 5;
            break;
    }
    updateScore(score);
}


public void updateScore(int score) {
    tv.setText(" " + score);
}
}    

2 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解你的问题。如果您希望分数根据选项进行更改,您可以执行以下任一操作 -

  1. score变量设为局部变量。 OR
  2. 不要将此选项的score添加到之前的score,即将+=替换为=,即

    score = 1;
    

答案 1 :(得分:0)

要实现目标,您需要存储每个单选按钮条目。在首先添加分数之前,您需要检查条目是否已经存在,如果没有,则添加分数,否则忽略。您可以使用HashMap类来保存单选按钮的输入。将单选按钮id保存为哈希映射的键,然后将条目添加到哈希映射检查此键是否已存在。这会对你有所帮助。添加代码来帮助您。

public void onRadioButtonClicked(View view) {
    //is the current radio button now checked?
    boolean checked = ((RadioButton) view).isChecked();

    //now check which radio button is selected
    //android switch statement
    switch (view.getId()) {
        case R.id.radioButton:
            if (!radioButtonRecord.containsKey(view.getId())) {
                score += 1;
                radioButtonRecord.put(view.getId(), true);
            }
            break;
        case R.id.radioButton2:
            if (!radioButtonRecord.containsKey(view.getId())) {
                score += 1;
                radioButtonRecord.put(view.getId(), true);
            }
            break;
        case R.id.radioButton3:
            if (!radioButtonRecord.containsKey(view.getId())) {
                score += 1;
                radioButtonRecord.put(view.getId(), true);
            }
            break;
        case R.id.radioButton4:
            if (!radioButtonRecord.containsKey(view.getId())) {
                score += 1;
                radioButtonRecord.put(view.getId(), true);
            }
            break;
    }
    updateScore(score);
}

在onnCreate方法之外使用以下代码

Map<Integer, Boolean> radioButtonRecord;

在oncreate方法中使用下面的代码

radioButtonRecord = new HashMap<>();

有关hashmap如何工作的进一步帮助,请参阅以下链接

https://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html
https://beginnersbook.com/2013/12/hashmap-in-java-with-example/