我尝试删除所有以编程方式添加的按钮,但是有一个小问题。

这是我的代码:

buttons = new Button[contacts.length()];
delete_button = new Button(getActivity());
delete_button.setText(String.valueOf(medicine_id));
delete_button.setId(medicine_id);
buttons[i] = delete_button;
layout.addView(delete_button);


首先,我在数据库中搜索特定产品。我可以得到0、1、2、3 ... n个元素。对于这些元素,我需要创建一个删除按钮。

我在循环中创建按钮,并将它们添加到Button []表中。然后,设置文本和ID,这些按钮将显示在我的视图中。问题是当我想从视图中删除它们时。

搜索新产品将删除以前创建的按钮。但是当我有一个具有例如两个元素,然后搜索包含一个元素的产品,那么从我的视图中仅删除了一个按钮。

这是我的删除代码:

if (buttons != null) {
    for (Button s : buttons) {
         layout.removeView(s);
    }
}


https://i.stack.imgur.com/RldJJ.png

https://i.stack.imgur.com/fz3nN.png

https://i.stack.imgur.com/Vz2zA.png

如您所见,在第三张图片中,没有从我的视图中删除一个按钮-编号为46的按钮。我应该更改什么?

编辑:我看到从Button []“按钮”的最后一个元素被删除。为什么不删除所有元素?

最佳答案

根据我的理解,我仅举几个例子。您可以删除自己的视图,例如

Android从父级删除视图

View myView = findViewById(R.id.hiddenLayout);
ViewGroup parent = (ViewGroup) myView.getParent();
parent.removeView(myView);


Android删除所有子视图

LinearLayout formLayout = (LinearLayout)findViewById(R.id.formLayout);
formLayout.removeAllViews();

10-07 19:24
查看更多