【问题标题】:Check the state of checkboxes which were added dynamically检查动态添加的复选框的状态
【发布时间】:2014-06-26 05:48:02
【问题描述】:

我像这样动态添加我的复选框:

 public void addFiles()
        {

             LinearLayout layout = (LinearLayout) findViewById(R.id.filesList);

            if(!FileManagerActivity.finalAttachFiles.isEmpty())
            {   

                for (final File file:FileManagerActivity.finalAttachFiles)
                {   

                    Log.i("what I've got", file.toString());
                    View line = new View(this);
                    line.setLayoutParams(new LayoutParams(1, LayoutParams.MATCH_PARENT));
                    line.setBackgroundColor(0xAA345556);
                    informationView= new CheckBox(this);
                    informationView.setTextColor(Color.BLACK);
                    informationView.setTextSize(16);
                    informationView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
                    informationView.setCompoundDrawablesWithIntrinsicBounds(R.drawable.file_icon, 0, 0, 0);
                    informationView.setText(file.getName().toString());
                    layout.addView(informationView, 0);
                    layout.addView(line, 1);
                    layout.postInvalidate();


                }
            }

        }

我有一个按钮,它的 onClick 事件应该获取那些复选框的可检查状态并删除已检查的...我该如何实现呢?

【问题讨论】:

    标签: android checkbox onclick


    【解决方案1】:

    您可以添加您的复选框,例如:

    for(int i=0;i<totalCB;i++){
        CheckBox chB=new CheckBox(context);
        ...
        chB.setId(i);
        layout.add(...);// add checkbox to view
    }
    

    现在,点击按钮,

    for(int i=0;i<totalCB;i++){
        CheckBox cb=(CheckBox)findViewById(i);
        boolean checked=cd.isChecked();// status of checkbox
    
        if(checked){
           // perform action 
        }
    }
    

    【讨论】:

    • @RikkiTikkiTavi:很高兴为您提供帮助! :)
    【解决方案2】:
     for(int i=0;i<layout.getChildCount;i++){
       if ( ((CheckBox) layout.getChildAt(i)).isChecked() )
                     //remove the Box
    }
    

    这应该可以解决问题。如果您的布局中有其他视图或创建一个仅承载复选框的新布局,您可能必须更改代码。代码当然会进入你的按钮 onclicklistener 的 OnClick 方法。

    【讨论】:

    • 好主意,我试着按照你的建议去做,但我得到了 ClassCastException
    • 这是要走的路,只需在演员表之前添加: if (child instanceof Checkable) {
    【解决方案3】:

    您可以使用informationView.setId(someUniqueInt) 为复选框设置ID。然后通过

    在活动中的任意位置找到一个文本框

    CheckBox checkBox = (CheckBox) findViewById(someUniqueInt)

    然后使用

    if (checkBox.isChecked()) {
         //do whatever you want here
    }
    

    【讨论】:

      猜你喜欢
      • 2013-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多