2013-02-04 1 views
5

値に基づいて、配列項目のインデックスを取得します。文字列の値に基づいて配列を返します。私は文字列 "値2"は1のインデックスを持っています。私は明らかに位置の値(0,1、など)をハードコードすることはできますが、文字列の順序が変更された場合には壊れます。コードを位置的に独立させたい次の作品:私はのstrings.xmlで2つの文字列を参照するarrays.xmlで定義された文字列配列を持つ

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

もっとコンパクトで簡単な方法はありますか?

+0

あなたは何をやっているのですか?私はおそらくXSLファイルを使用してXMLをXMLに変換することを考えています。そのため、新しいxmlに値が格納される場所をハードコードすることができます。それは理にかなっていますか? – Malachi

答えて

7

あなたの質問に表示されるコードは基本的に何をする必要があります。

Refactor 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)); 
0

おそらく、HashSetがあなたのようなものを助けてくれるかもしれません。あなたの文字列の名前をキーに、値を値として入れます。次に、キーの名前で値を選択することができます。

関連する問題