0

我刚开始使用 java & android。

下面是我的代码,在活动中添加所有按钮然后隐藏它们。问题:他们是否可以自动添加活动中的所有按钮而不必列出每个按钮,我查看了 listA.addall 但不明白如何将活动添加为集合。

这样做的理由是我可能希望更改按钮的数量并且仍然让代码工作。

public void setup2(){
    List<Button> listA = new ArrayList<Button>();

    listA.add((Button)findViewById(R.id.button1));
    listA.add((Button)findViewById(R.id.button2));
    listA.add((Button)findViewById(R.id.button3));
    listA.add((Button)findViewById(R.id.button4));
    listA.add((Button)findViewById(R.id.button5));

    for (Button item : listA)
        item.setVisibility(View.INVISIBLE);
}
4

2 回答 2

1

是的,这可能是最干净的方式。但是,如果您的按钮都以类似的 id 命名(button_1、button_2 等),您可以通过字符串而不是直接 ID 引用进行搜索。以下是按字符串获取按钮的示例:

int resID = getResources().getIdentifier("button_%i", "id", getPackageName());
Button addButton = (Button) findViewById(resID);

然后你可以循环你所有的按钮。

于 2013-02-11T22:04:50.680 回答
0

假设您的按钮位于视图组中,例如LinearLayout

for (int i = 0; i < layout.getChildCount(); i++) {
        View v = layout.getChildAt(i);
        if (v.getClass() == Button.class) {
            listA.add(v);
        }
} 

layout是对包含按钮的布局的引用。

这只是遍历布局中的每个子视图,比较它的类类型Button并将其添加到您的集合中。

于 2013-02-11T22:00:30.250 回答