根据值获取数组项的索引

时间:2013-02-04 22:07:22

标签: java android

我在arrays.xml中定义了一个字符串数组,它引用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>

我需要根据字符串的值获取数组中项目的位置。字符串“值2”的索引为1.我显然可以硬编码位置值(0,1等),但如果字符串的顺序发生变化则会中断。我希望代码在位置上独立。以下作品:

int value = Arrays.asList((getResources().getStringArray(R.array.my_options))).indexOf(getString(R.string.my_string_one));

有更紧凑,更简单的方法吗?

2 个答案:

答案 0 :(得分:11)

您在问题中显示的代码基本上就是您需要做的。

但是,您可以稍微重构它以使其更具可读性: 将Arrays.asList((getResources()。getStringArray(R.array.my_options)))重构为List(我不知道您的应用程序的代码是什么样的,但您可以将此List存储为实例字段或甚至作为静态(类)字段)。

static List<String> myOptions;

.... 
    if (myOptions == null) {
        myOptions = Arrays.asList((getResources().getStringArray(R.array.my_options)));
    }

...

    int value = myOptions.indexOf(getString(R.string.my_string_one));

答案 1 :(得分:0)

也许HashSet可能会帮助您或类似的东西,您将字符串的名称作为键,值作为值。然后,您可以使用键的名称选择值。