0
点赞
收藏
分享

微信扫一扫

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


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

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 Preference_android_02

if(options != null ){
     for(String f: options){  
         showInfo("select " + fruits[Integer.parseInt(f)]);
    } 
 }

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


举报

相关推荐

0 条评论