Android - 循环遍历 strings.xml 文件

Ale*_* C. 3 java xml android loops

我想知道是否有任何方式可以遍历strings.xml文件。

假设我有以下格式:

<!-- FIRST SECTION -->
<string name="change_password">Change Password</string>
<string name="change_server">Change URL</string>
<string name="default_password">password</string>
<string name="default_server">http://xxx:8080</string>
<string name="default_username">testPhoneAccount</string>

<!-- SECOND SECTION -->
<string name="debug_settings_category">Debug Settings</string>
<string name="reload_data_every_startup_pref">reload_data_every_startup</string>
<string name="reload_data_on_first_startup_pref">reload_data_on_first_startup</string>
Run Code Online (Sandbox Code Playgroud)

现在让我们说我有这个:

private HashMap<String,Integer> hashmapStringValues = new HashMap<String, Integer>();
Run Code Online (Sandbox Code Playgroud)

有没有办法只在我的 xml 文件的第二部分进行迭代?也许用一个标签包裹这个部分,<section2>然后遍历它?

public void initHashMap(){
    for (int i=0;i< ???? ;i++) //Here I need to loop only in the second section of my xml file
    {          
        String nameOfTag = ? // Here I get the name of the tag
        int value = R.string.nameOfTag // Here I get the associated value of the tag

        this.hashmapStringValues.put(nameOfTag,value);
    }
}
Run Code Online (Sandbox Code Playgroud)

Cha*_*ake 6

不,但您可以在包含以下内容的资源/值中创建另一个 xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string-array name="array">
        <item>ID_1|Asdf</item>
        <item>ID_2|I do not like to think</item>
        <item>ID_3|Whatever</item>
    </string-array>

</resources>
Run Code Online (Sandbox Code Playgroud)

您可以随意格式化字符串,然后使用自定义解析器解析它们。

要获取字符串数组,您只需执行以下操作:

getResources().getStringArray(R.array.array);
Run Code Online (Sandbox Code Playgroud)


aja*_*n81 5

如果您查看生成的 android.R java 文件,它会为您提供如何通过反射来完成此操作的好主意:

    Field fields[] = R.string.class.getFields();
    for (Field field : fields) {
        Log.d("appname", field.getName() + ":" + getResources().getIdentifier(field.getName(), "string", this.getPackageName()));
    }
Run Code Online (Sandbox Code Playgroud)

请注意,我不会经常这样做,但是应用加载一次应该没问题。