2011-01-21 4 views
2

私はlistpreferenceです。どんなに私はここにコードをコピーする方法、間違って表示されませんので、私はちょうどそれの問題をコピーします。Android listpreference - 値を取得中

string-array name="listArray" 
items: Mercedes, Audi, Porsche 

string-array name="listValues" 
items: car1, car2, car3 

私はlistpreference部にpreferences.xmlにこのコードを持っている:

<ListPreference 
      android:title="List Preference" 
      android:summary="This preference allows to select an item in a array" 
      android:key="listPref" 
      android:defaultValue="digiGreen" 
      android:entries="@array/listArray" 
      android:entryValues="@array/listValues" /> 

そして、これ

String listpref = preferences.getString("listPref", "n/a"); 
    Toast.makeText(TutorialPref.this, "Chosen item of ListPref:" + listpref, Toast.LENGTH_LONG).show(); 

問題は、アイテムではなく値を返します。だから私がメルセデスを選んだ場合、私が得た価値は「car1」です。

"メルセデス"はどのように入手できますか?

答えて

5

あなたが値としてキーとあなたの配列エントリとして、あなたの配列の値を持つマップを作成することができます。

private Map<String,String> cars = new HashMap<String, String>(); 

if (cars.isEmpty()) { 
    String[] carNames = getResources().getStringArray(R.array.listArray); 
    String[] carIds = getResources().getStringArray(R.array.listValues); 
    for (int i = 0; i < carIds.length; i++) { 
    cars.put(carIds[i], carNames[i]); 
    } 
} 

そして、あなたのトーストで、cars.get(listpref)

+0

fantastic!ありがとうございました! – erdomester

5

で車名を取得あなただけ配置する必要があります同じ配列内のエントリの値と同じ

android:entryValues="@array/listArray" 
関連する問題