Pro Android学习笔记(六十):Preferences(4):MultiSelect List Preference

Pro Android学习笔记(六十):Preferences(4):MultiSelect List Preference_第1张图片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)]);
    }
}

本博文涉及的例子代码,可以在Pro Android学习:Preference(首选项)小例子中下载。

相关链接: 我的Android开发相关文章

你可能感兴趣的:(Pro Android学习笔记(六十):Preferences(4):MultiSelect List Preference)