1. 程式人生 > >Pro Android學習筆記(六十) Preferences(4) MultiSelect List Preferen

Pro Android學習筆記(六十) Preferences(4) MultiSelect List Preferen

ListPreference提供單選列表,我們可以通過CheckBoxPreference提供多選列表。此外,Android在3.0後提供MultiSelectListPreference,它的實現和ListPreference相似,不同的是還可以不選擇或者多個選擇。如圖所示。

XML檔案

在複合例子中加入相關的內容,如下。同樣地可以採用@array來對entry和entryvalue進行定義,使用比CheckBox Preference要方便。

......
  <PreferenceScreen android:key="multi_select_test"
    android:title="MultiSelect List Preference"
    android:summary="Test for Multiselect List Preferences">

      <MultiSelectListPreference android:key="fruits"
        android:title="Select Your Favourite Fruits"
        android:summary="選擇您喜歡的水果"
        android:entries="@array/fruit"
        android:entryValues="@array/fruit_index"
        android:dialogTitle="水果:"  />    
  </PreferenceScreen>

… …

在裝置中儲存

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>

    … … 
    <set name="fruits">
        <string>2</string>
        <string>0</string>
    </set>
    … …
</map>

讀出資訊

從儲存檔案中可以看出,資料格式是Set,讀取起來比以往的稍微麻煩一點,程式碼如下:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
Set<String>options = prefs.getStringSet("fruits", null);

  //因不設定初始值,所以要進行null的判斷
showInfo("Multi Select: " + options);
String[] fruits = getResources().getStringArray(R.array.fruit);
if(options != null ){
    for(String f: options){ 
        showInfo("select " + fruits[Integer.parseInt(f)]);
    }
}