2013-06-18 65 views
0

我正在开发一个android termostat应用程序,并且我已经完成了一组项目的列表(代码中)。所以我动态地添加按钮。当用户点击其中一个按钮时,我想让所有具有相同父代(LinearLayout)的视图被删除。通过动态创建的按钮删除动态创建的ViewGroup

我该怎么写一段代码呢?

下面我创建这个“条目”的代码。

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); 
} 

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

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中的所有意见,这个按钮所属被删除。

回答

0

所有ViewGroup s都有一些removeView()的味道。您可能不得不使用实例变量来引用一些视图。

+0

感谢您的提示!我检查了所有的功能,特别是我的LinearLayout的“容器”。函数ll.removeAllViewsInLayout()做了窍门! –

+0

很高兴帮助。另外,你应该使用'removeAllViews()'来代替。 'removeAllViewsInLayout()'用于在视图层次结构的布局遍历期间使用。 – Karakuri