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)
不,但您可以在包含以下内容的资源/值中创建另一个 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)
如果您查看生成的 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)
请注意,我不会经常这样做,但是应用加载一次应该没问题。
| 归档时间: |
|
| 查看次数: |
5900 次 |
| 最近记录: |