收藏夹AddAll Android

时间:2013-02-11 21:55:14

标签: java android collections

我刚刚开始使用java&机器人。

下面是我的代码,添加活动中的所有按钮然后隐藏它们。 问题:他们无论如何都要自动添加活动中的所有按钮而不必列出每个按钮,我查看了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);
}

2 个答案:

答案 0 :(得分:1)

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

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

然后你可以绕过你所有的按钮。

答案 1 :(得分:0)

假设您的按钮位于视图组e,g,LinearLayout

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

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

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

相关问题