0

在我的项目中,我创建了一个数组列表来存储选定的复选框值。即如果选中了一个复选框,我将它的 id 值存储在 arraylist 中,如果未选中,我将从 arraylist 中删除它。此外,如果在该页面中未选中或未选中任何复选框,我将在数组列表中存储“00”。if 和 elseif 条件在我的代码中工作正常,但 * else 部分不起作用.. *我哪里出错了?请帮我解决这个问题......

我的代码:

public static ArrayList<String> selchkboxlist = new ArrayList<String>();

cbs[k].setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        if (((CheckBox) v).isChecked()) {
            selchkboxlist.add(Integer.toString(v.getId()));
            System.out.println("chkboxlist size" + selchkboxlist.size());
            System.out.println("selected checkboxes" + selchkboxlist);
        } 
        else if(!(((CheckBox) v).isChecked()))
        {
            selchkboxlist.remove(Integer.toString(v
                    .getId()));
            System.out.println("after delete chkboxlist size" + selchkboxlist.size());
            System.out.println("un selected checkboxes" + selchkboxlist);
        }
        else
        {
            selchkboxlist.add("00");
            System.out.println("nothing selected selected checkboxes"
                    + selchkboxlist);
        }
    }
});
4

2 回答 2

1

else case 永远不会被输入,因为一个复选框要么被选中,要么没有被选中。

在您实际单击复选框之前,不会调用 onclick 侦听器。

我不完全确定您想要完成什么,但您可能只想将选中的复选框添加到选中的项目列表中。

于 2012-04-14T10:21:43.963 回答
0

复选框只能选中或不选中,else 语句在您的代码示例中无法访问。

使用 OnCheckedChangeListener 而不是点击:

selchkboxlist.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if ( isChecked )
        {
            //user checked checkbox
        }else{
            //user unchecked checkbox
        }
    }
});

然后,当“提交”您的复选框时,请在您的循环中检查以查看用户是否未选择该框

if(!checkbox.isChecked()) selchkboxlist.add("00");

于 2012-04-14T10:26:44.087 回答