如何处理android中的复选框缺陷和未检查事件

Zal*_*inh 1 checkbox android

我是android.i中的新手,制作一个简单的数学应用程序.我使用复选框选择正确的选项,但问题是在这里答案选项不仅是一个而且是两个,三个意味着多选择所以我使用复选框

chkOption.setOnCheckedChangeListener(this);
Run Code Online (Sandbox Code Playgroud)

事件并尝试处理this.并将选择值存储在一个Arraylist中.但是当我选择选项时,值是在arrayList中添加但是当我取消选中(Diselect)时,事件也会发生并且值在arraylist中添加.我的代码如下

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {   
        CheckBox chk=(CheckBox) buttonView;
        if(chk.isChecked())
        {
            forMetchCheckBox.add(String.valueOf(chk.getText()));            
        }
    }   
Run Code Online (Sandbox Code Playgroud)

forMetchCheckbow是我的String ArrayList.所以我该怎么办?如何处理这个问题.如果有任何用户取消选择该选项,那么可以从ArrayList.it删除复选框选择值吗?

Lal*_*ani 7

您似乎拥有多个复选框,并且您正在为每个复选框设置全局侦听器.因此,在这种情况下,您还需要为特定复选框标识事件.

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {   
        int id = buttonView.getId();
        if(id == R.id.chk)
        {
          if(chk.isChecked()){
               forMetchCheckBox.add(String.valueOf(chk.getText()));
            }
           else{
               forMetchCheckBox.remove(String.valueOf(chk.getText()));
           }
        }
        else if(id == R.id.chk1){
           ....
        }
    }  
Run Code Online (Sandbox Code Playgroud)

等等,这将使你的听众工作完美.