繁体   English   中英

如何检查所有RadioGroup?

How Handle If all RadioGroup Checked?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有60个项目的RecyclerView。 该项目具有RadioGroup,并且在此具有两个单选按钮

我也使用DataBinding

我有FabButton,如果单击“是”,我将进入“结果活动”,但是如果所有RadioGroup已选中:)

我写这样的代码,它可以工作,但是有一些错误...当我单击第60个项目时,即使不检查59个项目,我也将进入结果活动。

为什么呢?

这是我的代码:

//Select All Radio Group
public boolean allSelected() {
    boolean allChecked = true;
    for (Question question : questions) {
        allChecked = question.getSelectedId() != 0;
    }
    return allChecked;
}

//Card background if Uncheck the question
private void showHideErrorBackground(boolean show) {
    for (Question question : questions) {
        question.setShowErrorBackground(show);
    }
    mbtiQuestAdapter.notifyDataSetChanged();
}

并且喜欢它,我使用This Method:

if (allSelected()) {

  Intent intent = new Intent(MbtiQuestionActivity.this, ResultActivity.class);

        startActivity(intent);

} else {
        snack bar =
          Snackbar.make(coordinator, R.string.check_all_ques_err, Snackbar.LENGTH_SHORT)

            .setAction(R.string.snack_find_unchecked_ques, new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                showHideErrorBackground(true);
              }
            });

        ViewCompat.setLayoutDirection(snackbar.getView(), ViewCompat.LAYOUT_DIRECTION_RTL);
        snackbar.show();
}

Question.java(模型数据)

public class Question extends BaseQuestion {

  private int selectedId;
  private boolean showErrorBackground;

  @Bindable
  public void setShowErrorBackground(boolean showErrorBackground) {
    this.showErrorBackground = showErrorBackground;
    notifyPropertyChanged(BR.showErrorBackground);
  }

  @Bindable
  public int getSelectedId() {
    return selectedId;
  }

  public void setSelectedId(int selectedId) {
    this.selectedId = selectedId;
    notifyPropertyChanged(BR.selectedId);
  }

  public boolean isShowErrorBackground() {
    return showErrorBackground;
  }
}

在此处输入图片说明

谢谢你帮我

2 个回复

allSelected方法内部,直接将变量allChecked的值设置为循环中当前问题的检查状态。 这意味着只要检查了最后一个问题, allChecked的值将为true 同样,如果不进行检查,则始终为false ,但这与您的应用程序行为一致,因此您可能不会遇到任何问题。

相反,您应该使用AND操作,如下所示:

allChecked = allChecked && (question.getSelectedId() != 0);

由于如果未解决任何问题, for循环应该中断,因此您可以通过执行以下操作来优化代码:

for (Question question : questions) {
      if (question.getSelectedId() == 0) {
          allChecked = false;
          break;
      }
}

在此代码中,一旦遇到未回答的问题, allChecked将设置为false ,其余的问题将被跳过。 您无需在每次迭代中使用AND操作。

此方法返回的布尔值只是最后一个question.getSelectedId()的值。

public boolean allSelected() {
    boolean allChecked = true;
    for (Question question : questions) {
       allChecked = question.getSelectedId() != 0;
    }
    return allChecked;
}

尝试这个 :

public boolean allSelected() {
    for (Question question : questions) {
        if (question.getSelectedId() == 0)
            return false;
    }
    return true;
}
1 运用 设置所有 检查错误

我想知道是否可以使用RadioGroup将所有RadioButtons设置为指定值。 就我而言,我有这个: 所以我有不同的<LinearLayout> ,其中每个都可以使用按钮看到。 因此,如果选择了按钮,则会出现布局,因此所有radioGroup都会出现。 所以在这里 ...

2018-11-01 18:23:57 2 32   android
8 如何获得很多RadioGroup检查的单选按钮?

我动态创建了n个单选按钮组,每个单选按钮组都有k个单选按钮。 我想将选中的单选按钮文本保存到文件中,但是我不知道如何获取每个选中的单选按钮id。 我创建了单选按钮和单选组,如下所示: 请帮我! ...

10 如果已在 RadioGroup 中选中,如何取消选中 RadioButton

我在 RadioGroup 中有两个 RadioButton,最初都未选中。 如果 RadioButton 已经被选中,我想取消选中它。 我试过了,但我做不到。 当我选择任何单选按钮时,第一次不会将状态更改为选中状态,如果我第二次选择相同的单选按钮,则它会更改其状态,如果我选择其他单选按钮,如果选中 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM