通过动态创建的按钮删除动态创建的ViewGroup



我正在开发一个android termostat应用程序,我已经列出了一组项目(在代码中)。因此,我动态地添加按钮。当用户单击其中一个按钮时,我希望所有具有相同父视图(LinearLayout)的视图都被删除。

我怎样才能写出这样的代码呢?

在我创建这个"entry"的代码下面。

private void createEntry(int entry){
    TableLayout my_root = (TableLayout) findViewById(R.id.day_root);
    LinearLayout A = new LinearLayout(this);
    A.setOrientation(LinearLayout.HORIZONTAL);
    A.setId(DYN_LAYOUT_ID + entry);
    ImageView im1 = new ImageView(this);
    ImageView im2 = new ImageView(this);
    im1.setImageResource(R.drawable.sun_small);
    im2.setImageResource(R.drawable.moon_small);
    TextView tv = new TextView(this);
    Button btn = new Button(this);
    btn.setText("remove");
    tv.setText(new StringBuilder().append(pad(sHour)).append(":").append(pad(sMinute))
            .append(" - ").append(pad(eHour)).append(":").append(pad(eMinute)));
    tv.setTextSize(20);
    A.addView(im1);
    A.addView(tv);
    A.addView(im2);
    A.addView(btn);
    my_root.addView(A);
}

编辑:我最初的尝试似乎解决了问题(更新了上面代码的一部分)

Button btn = new Button(this);
    btn.setId(BUTTON_ID + entry);
    btn.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            int row = v.getId() - BUTTON_ID;
            LinearLayout ll = (LinearLayout) findViewById(DYN_LAYOUT_ID + row);
            ll.removeAllViewsInLayout();    
        }
    });

当btn被点击时,所有属于这个按钮所属的LinearLayout的视图都被移除。

所有的ViewGroup都有一些removeView()的味道。您可能需要使用实例变量来保存对某些视图的引用

最新更新