android使用Java中的for循环遍历按钮id

时间:2015-09-11 03:38:21

标签: java android

我正在处理的应用的活动上有几个按钮。

我有每个存储在数组中的文本(数据可以更改),我试图用for循环更新所有这些文本。

Id是button1,button2和button3

这就是我想要的

for(int i=1; i<=splitter.length; i++){
        Button button = (Button)findViewById(R.id.button[i]);//<---How do i make this work

button.setText(spliter[i-1]);
    }

3 个答案:

答案 0 :(得分:6)

作为一个简单的解决方案,您应该尝试迭代包含视图的子项:

考虑到你的按钮都在布局中,如下所示:

<LinearLayout
    android:id="@+id/layout_container_buttons"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button1"/>

    <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button2"/>

</LinearLayout>

然后只需简单地遍历所有Layout子项:

ViewGroup layout = (ViewGroup)findViewById(R.id.layout_container_buttons);
for (int i = 0; i < layout.getChildCount(); i++) {

    View child = layout.getChildAt(i);
    if(child instanceof Button)
    {
        Button button = (Button) child;
        button.setText(spliter[i]);
    }

}
但是,更好的方法是根据数组大小动态创建按钮,并将它们添加到LinearLayout,而不是在layout.xml文件中复制/粘贴它们。每次您想要添加/删除某些内容时,这将有助于您获得阵列上每个值的确切按钮数。

ViewGroup layout = (ViewGroup) findViewById(R.id.layout_container_buttons);
for (int i = 0; i < splitter.length; i++) // iterate over your array
{
    // Create the button
    Button button = new Button(this);
    button.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
                                                         LinearLayout.LayoutParams.WRAP_CONTENT));
    button.setText(splitter[i]);
    layout.addView(button); // add to layout
}

答案 1 :(得分:3)

for (int i = 1; i <= splitter.length; i++) {
    Button button = (Button) findViewById(getResources().getIdentifier("button" + i, "id",
            this.getPackageName()));

    button.setText(spliter[i - 1]);
}

希望它有所帮助。

答案 2 :(得分:0)

按钮的实例名称将相同。就像会有多个同名实例一样。你将如何区分按钮。