【问题标题】:dynamically adding check box and getting its checked unchecked value in android动态添加复选框并在android中获取其选中的未选中值
【发布时间】:2016-04-19 08:46:22
【问题描述】:

我正在创建一个 android 应用程序,其中有 20 个复选框要向用户显示以进行多项选择。我已经编程动态显示复选框,但问题是如何获取复选框值?到目前为止,我已经尝试过此代码。

我的全局变量是

ArrayList<MyCheckBox> listOfCheckedItem;
private int CHECKBOX_POSITION;

为了添加复选框,我做了类似的事情

listOfCheckedItem = new ArrayList<>();
        listOfCheckedItem.add(new MyCheckBox(true, "One")); //(isChecked,text)
        listOfCheckedItem.add(new MyCheckBox(false, "Two"));
        listOfCheckedItem.add(new MyCheckBox(true, "Three"));
        listOfCheckedItem.add(new MyCheckBox(false, "four"));
        listOfCheckedItem.add(new MyCheckBox(false, "five"));

        ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        for (int i = 0; i < listOfCheckedItem.size(); i++) {
            CHECKBOX_POSITION = i;
            MyCheckBox myCheckBox = listOfCheckedItem.get(i);
            CheckBox checkBox = new CheckBox(this);
            checkBox.setChecked(myCheckBox.getIsChecked());
            checkBox.setText(myCheckBox.getText());
            selectCategoryLayout.addView(checkBox, params);
            checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    listOfCheckedItem.get(CHECKBOX_POSITION).setIsChecked(isChecked);
                }
            });
        }

为了得到复选框的值,我这样做了

StringBuilder builder = new StringBuilder();
        for (int i = 0; i < listOfCheckedItem.size(); i++) {
            MyCheckBox mcb = listOfCheckedItem.get(i);
            builder.append("\nstatus: " + mcb.getText() + " is " + mcb.getIsChecked());
        }
        resultView.setText(builder.toString());

当我第一次运行应用程序时,每个复选框都正确显示,当我单击按钮获取复选框(选中/未选中)值时,它显示正确的结果,但是当我选中/取消选中任何一个复选框时并再次单击按钮以获取结果,仅更改最后一个复选框值。我错过了什么,我无法弄清楚。

【问题讨论】:

  • 将标签属性添加到动态生成的复选框。然后通过该标签找到视图。

标签: android checkbox


【解决方案1】:

问题解决了, 而不是这样做

checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    listOfCheckedItem.get(CHECKBOX_POSITION).setIsChecked(isChecked);// changed this line as below code
                }
            });

我喜欢这个

checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    myCheckBox.setIsChecked(isChecked);//I changed this line and every thing worked fine
                }
            });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 2014-05-16
    • 2023-03-18
    相关资源
    最近更新 更多