2011-01-21 62 views
2

我有一个listpreference。不管我怎么会在这里复制的代码,它出现错误,所以我只是复制了它的事情:Android列表首选项 - 提取值

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

太棒了!谢谢! – erdomester 2011-01-21 18:53:37

5

取回车名你只需把条目中的相同数组值VALVE中的条目

android:entryValues="@array/listArray"