我可以在 Android 中将 android:id 声明为数组吗?

Mar*_*ský 3 java layout android

我有这个代码。

rele[0] = new ReleController(findViewById(R.id.button1), 1, this);
rele[1] = new ReleController(findViewById(R.id.button2), 2, this);
rele[2] = new ReleController(findViewById(R.id.button3), 3, this);
rele[3] = new ReleController(findViewById(R.id.button4), 4, this);
Run Code Online (Sandbox Code Playgroud)

我的按钮布局如下所示:

<LinearLayout style="@style/CoreLayout">

    <ImageButton
        android:id="@+id/button1"
        style="@style/Button.Blue"
        android:src="@mipmap/ic_arrow_left" />

    <ImageButton
        android:id="@+id/button2"
        style="@style/Button.Green"
        android:src="@mipmap/ic_arrow_right"/>
</LinearLayout>

<LinearLayout style="@style/CoreLayout">

    <ImageButton
        android:id="@+id/button3"
        style="@style/Button.Yellow"
        android:src="@mipmap/ic_arrow_up"/>

    <ImageButton
        android:id="@+id/button4"
        style="@style/Button.Purple"
        android:src="@mipmap/ic_arrow_down"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我想弄清楚是否有办法做这样的事情:

for(int i = 0; i < 4; i++)
{
  rele[i] = new ReleController(findViewById(R.id.button[i+1]), i+1, this);
}
Run Code Online (Sandbox Code Playgroud)

实际上,我有 8 个按钮,因此为所有按钮编写所有这些行真的很烦人。

我想知道按钮 ID 是否可以像这样声明为数组:

android:id="@+id/button[1]"
android:id="@+id/button[2]"
android:id="@+id/button[3]"
...
Run Code Online (Sandbox Code Playgroud)

感谢您的所有回答。

bab*_*aba 7

您可以使用数组来存储视图的 id。只需像这样声明你的数组:

int[] buttonId = new int[] { R.id.button1, R.id.button2, R.id.button3, R.id.button4 }
Run Code Online (Sandbox Code Playgroud)

然后遍历它。