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

时间:2023-11-24 10:05:02

目录(?)[-]

  1. XML文件
  2. 在设备中保存
  3. 读出信息

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); 
【转】 Pro Android学习笔记(六十):Preferences(4):MultiSelect List Preferenceif(options != null ){
    for(String f: options){  
        showInfo("select " + fruits[Integer.parseInt(f)]);
    } 
}

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

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