onClick侦听器列表中的每个复选框

时间:2014-04-09 23:21:44

标签: android checkbox

我创建了一个带有复选框列表的arrayadapter。现在,根据点击的复选框,我想接受该特定复选框的值。有人可以帮忙吗?

这是我的代码:

public void meth(View view) {
    // Is the view now checked?
    boolean checked = ((CheckBox) view).isChecked();

    // Check which checkbox was clicked
    switch(view.getId()) {
        case R.id.product_name:
            if (checked)
            {
                final CheckBox cb01 = (CheckBox) findViewById(R.id.product_name);
                A[i]=(String) cb01.getText();
                ++i;
                j=i;
                //savePreferences("checkb_1", true);
            }   
            break;
            default:break;
    }
}

当我执行此代码时,无论我选择了多少个复选框,只会选中第一个复选框的值,并按复选框的数量重复。也就是说,如果我选择三个复选框,则所有三个复选框都显示在另一个活动中,但名称与第一个复选框的名称相同。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您的问题是您已经抓住了列表视图中只有一个项目的复选框。您需要在列表中的每个项目上设置onClickListener。

有两种简单的方法可以做到这一点:

  1. list.setOnItemClickListener此方法将点击侦听器放在整行上。
  2. 在arrayAdapter.getView中,设置view.setOnClickListener,或在实际复选框上设置它:

    public View getView(int position, View view, ViewGroup parent) {
    
    // Create a cell, or clear an existing one.
    if (view == null) {
        view = activityContext.getLayoutInflater().inflate(R.layout.list_cell, parent, false);
    }
    CheckBox cb = (CheckBox) view.findViewById(R.id.product_name);
    cb.setOnClickListener(YOUR ON CLICK LISTENER)
    }
    
  3. 我在getView中遗漏了一些正常的错误检查代码。