7

文字列.xml内の2つの文字列を参照する文字列配列がarrays.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));

これを行うためのよりコンパクトで簡単な方法はありますか?

4

2 に答える 2

11

あなたがあなたの質問で示すコードは基本的にあなたがする必要があることです。

ただし、多少リファクタリングして読みやすくすることもできます。Arrays.asList((getResources()。getStringArray(R.array.my_options)))をリストにリファクタリングします(アプリのコードがどのように見えるかはわかりませんが、このリストをインスタンスフィールドとして、または静的(クラス)フィールドとして保存できる場合があります。

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));
于 2013-02-04T22:16:17.473 に答える
0

たぶん、HashSetは、文字列の名前をキーとして、値を値として配置する、またはそのようなものに役立つ可能性があります。次に、キーの名前で値を選択できます。

于 2013-02-04T22:11:22.787 に答える