在XML资源中存储R.id.elements

时间:2018-03-08 21:03:40

标签: java android android-resources

我有几个EditText元素的布局:

<EditText android:id="@+id/etName"/>
<EditText android:id="@+id/etModel"/>
<EditText android:id="@+id/etYear"/>

此数组存储所有这些元素的ID:

int[] fields = {
     R.id.etName,
     R.id.etModel,
     R.id.etYear
};

我可以在“res / values / fields.xml”中存储和加载这些ID,而不是像以下那样在java文件中使用int数组:

<resources>
    <array name="fields">
        <item name="etName" type="id" />
        <item name="etModel" type="id" />
        <item name="etYear" type="id" />
    </array>
</resources>


TypedArray fields = getResources().obtainTypedArray(R.array.fields);

1 个答案:

答案 0 :(得分:2)

您的ID已经存在于xml布局中,您可以简单地引用它们来定义数组:

<array name="fields">
    <item>@id/etName</item>
    <item>@id/etModel</item>
    <item>@id/etYear</item>
</array>

之后您可以在代码中使用此数组:

TypedArray fields = getResources().obtainTypedArray(R.array.fields);
for (int i = 0; i < fields.length(); i++) {
    EditText editText = findViewById(fields.getResourceId(i, 0));
    editText.setText("Yo!"); // or something else
}
fields.recycle();