getResourceEntryName for an array item

2019-03-04 09:27发布

问题:

I have a string array in strings.xml as detailed below:

<string-array name="spinerArray">
    <item name="one">First</item>
    <item name="two">Second</item>
    <item name="three">Third</item>
    <item name="four">Fourth</item>
</string-array>

And I need to retrieve one of the items name not the value (one, two, three, four). So far, I know it's possible to get the name of the array using getResourceEntryName like:

getResources().getResourceEntryName(R.array.spinerArray);

Is there a way to get an item name?

Thanks.

回答1:

As this is an xml, you will need a xml parser. Then you can get the values of name using

attributes.getValue("name");

Or

name = ((Element) your_node).getAttribute("name"));
using DOM parser (org.w3c.dom)


回答2:

Another solution:

Resources res = getResources();
TypedArray entriesTypedArray = res.obtainTypedArray(R.array.spinerArray);
ArrayList entriesName = new ArrayList();
TypedValue v1 = new TypedValue();
for (int i1=0; i1<entriesTypedArray.length(); i1++) {
    entriesTypedArray.getValue(i1, v1);
    String name1 = res.getResourceEntryName(v1.resourceId);
    entriesName.add(name1);
}