【问题标题】:How to check if checkbox is checked in a specific row?如何检查复选框是否在特定行中被选中?
【发布时间】:2017-11-26 18:31:22
【问题描述】:

我生成了一个表格,每行末尾都有复选框。如果在该行中选中了复选框,我想对特定行中的所有值求和。因此,我需要检查是否在该特定行中选中了复选框。到目前为止,我有这个:

btnCalculate.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        try {
            int sum = 0;
            for(int i=0; i<rowNumber; i++) {
                if(cb.isChecked()) {
                    sum = sum + rowSums[i];
                }
            }
            txtResult.setText(String.valueOf(sum));
        } catch (Exception e) { }
    }
});

通常,我可以访问一行中所有单元格的值,并且可以将行内的所有这些值相加。但是,当我在 sum 中添加 if 语句时,我总是得到 0。我知道问题出在哪里。我知道我必须检查是否在该特定行中选中了复选框。但我不知道该怎么做。 顺便说一句,我还为行内的每个复选框设置了 ID。例如,第一行复选框的 ID 为 0,第二行的复选框 ID 为 1,依此类推。所以我只需要访问那个特定的复选框并检查它是否被选中。

编辑(已解决) 我将每个复选框都存储在 CheckBox 数组中。然后在我的 for 循环中,我调用了那个特定的 CheckBox,它运行良好。

private CheckBox cb;
private CheckBox [] cbs;

在for循环中:

cbs[i] = cb;

还有我的 for 循环:

for(int i=0; i<rowNumber; i++) {
   if(cbs[i].isChecked()) {
      sum = sum + rowSums[i];
   }
}

【问题讨论】:

  • 不要为您的视图使用 id = 0,因为这对 Android 来说意味着“没有 id”。
  • 哦,谢谢你的提示。我现在要改变它。我只是在寻找一种方法,比如用复选框的 id 来获取特定的复选框

标签: android checkbox android-checkbox


【解决方案1】:

您可以为复选框创建一个侦听器,以便在选中/取消选中任何复选框时添加/删除相应数据到计算中。

OR:

你可以给所有的复选框ID,然后将ID存储在类中的一个数组中,如:

    //as a class attribute 
    Int[]checkboxesIds = new array[] {ids in xml};  
    //in the loop
    CheckBox ch = findViewById(ids[i])
    ch.ischecked();

但是对于大量数据是错误的。

【讨论】:

  • 实际上,CheckBox ch = findViewById(ids[i]) 部分对我有用,但我仍然不确定如何在该特定行中获取复选框。我正在寻找类似cb.getCheckbox(id) 的东西,它选择了我需要的复选框。
  • 你用过tableview吗?是这样尝试使用这个:stackoverflow.com/questions/30191264/…
猜你喜欢
  • 2019-01-12
  • 2021-07-16
相关资源
最近更新 更多