I have a string array defined in arrays.xml that references two strings in strings.xml:
<string-array name="my_options">
<item>@string/my_string_one</item>
<item>@string/my_string_two</item>
</string-array>
<string name="my_string_one">Value 1</string>
<string name="my_string_two">Value 2</string>
I need to get the position of an item in the array, based on the value of the string. I.e string “Value 2” has an index of 1. I can obviously just hard code the positional values (0, 1, etc.), but it will break if the order of the strings is changed. I want the code to be positionally independent. The following works:
int value = Arrays.asList((getResources().getStringArray(R.array.my_options))).indexOf(getString(R.string.my_string_one));
Is there a more compact, simpler way to do this?
The code you show in your question is basically what you need to do.
However, you could refactor it somewhat to make it more readable:
Refactor Arrays.asList((getResources().getStringArray(R.array.my_options))) into a List (i don’t know how your app’s code looks like, but you may be able to store this List as a instance field or even as a static (class) field).