添加/删除LinearLayout VS ListView的动态复选框

时间:2012-08-31 12:34:06

标签: android listview checkbox adapter

我有一个从另一个Activity获得的数组。我想在当前的Activity中显示它作为CheckBox项目,然后能够检查其中一些并通过按钮单击删除。我接下来实现它:

  public void addFiles()
        {

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

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

                for (int i=0; i<FileManagerActivity.finalAttachFiles.size();i++)
                {   


                    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(FileManagerActivity.finalAttachFiles.get(i).getName().toString());
                    informationView.setId(i);
                    layout.addView(informationView, 0);
                    layout.addView(line, 1);
                    layout.postInvalidate();


                }
            }

        }

,并在onCreate()方法中调用它。它可以成功添加。然后我得到像这样检查的项目:

  btnFilesRemove.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
            LinearLayout layout = (LinearLayout) findViewById(R.id.filesList);
            View v = null;
            for(int i=0; i<FileManagerActivity.finalAttachFiles.size(); i++) {
                v = layout.getChildAt(i);

                CheckBox checkBox = (CheckBox) findViewById(i);
                boolean checked=checkBox.isChecked();
                if (checked)
                {  
                    Log.i("was checked",checkBox.getText().toString());
                    ViewGroup parent = (ViewGroup) v.getParent();
                    parent.removeView(v);
                    FileManagerActivity.finalAttachFiles.remove(i);
                    Log.i("this is view,baby",v.toString());

                }

            }


        }
    });

但无法删除项目。我正在考虑 - 更好的是 - 以这种方式实现它,或者使用ListView可能会更高效。我的意思是创建ArrayAdapter e.t.c ..

0 个答案:

没有答案