Android ListPreference的用法

摘要:
首先,我们要明确,偏好与数据存储有关。让我们从android的首选项实现开始。事实上,首选项中存储的数据将以xml文件的形式保存,它只能以基本格式保存一些数据。各种限制和实现机制表明,偏好非常适合参数设置。为了简化与偏好相关的应用程序开发,android为我们提供了一系列api来帮助我们。

首先,我们明确,preference是和数据存储相关的。

       其次,它能帮助我们方便的进行数据存储!为什么这个地方一定要强调下方便的这个词呢?原因是,我们可以根本就不使用,我们有另外的N种办法可以实现同样的功能!它的出现,相当于为我们提供了一个方便的工具,当然了,这个工具并不是必须的。

       preference都应用在什么场景呢?

       这得从android对preference的实现说起,实际上,preference所存储的数据最后都会以xml文件格式的形式进行保存,而且其只能 保存一些基本格式的数据。例如string/boolean……。该xml文件存放的位置在data/data/你应用的包名/shared_prefs 文件夹下。

       种种的限制与实现机制表明了,preference非常适合于参数设置功能。实际上,它也确实是干这个的,我们通过使用preference可以迅速的将某些值保存进xml文件中,然后我们可以读取这些设置信息进行相应的操作。
为 了简化与preference相关的应用开发,android为我们提供了一系列的api来帮助我们。主要有 PreferenceActivity,ListPreference,EditTextPreference,CheckBoxPreference,RingtonePreference

       下面我们简单的介绍下ListPreference的用法:

 

 Android ListPreference的用法第1张

 

 Android ListPreference的用法第2张

我们选择了山东,然后该页面就会自动关闭,并且和山东所对应的值也已经写入了后台的xml文件中。

 

java代码:

/*
 首选项preferences 继承了PreferenceActivity,所以 我们可以方便的对preference进行操作。
  例如可以通过getPreferenceManager 获取 首选项管理器
  那么 我们可不可以不继承PreferenceActivity呢?当然可以,实际上Activity类中就有个SharedPreferences getSharedPreferences(String name, int mode)方法 ,我们也可以 通过它,对preference进行操作。但是如果我们不继承PreferenceActivity的话,那么我们就要 手动的 对数据进行保存了。而不是跟现在一样,会自动的根据你的选择项进行数据保存。
 那么,preference在这里是怎么样进行自动保存的呢,答案很简单,那就是在addPreferencesFromResource方法 的具体实现中!
*/

public class MyPreferencesActivity extends PreferenceActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        addPreferencesFromResource(R.xml.mylistpreference);
        
        /**
        * getPreferenceManager 返回首选项管理器对象
        */
        PreferenceManager manager = getPreferenceManager();
        
        // 根据android:key中指定的名称(相当于id)来获取首选项
        ListPreference listPreference = (ListPreference) manager.findPreference("myListPreference");
        Log.i("存储的值为", ""+listPreference.getValue());
    }
}


   res/xml/mylistperference.xml布局文件
       
     <?xml version="1.0" encoding="utf-8"?>
<!--
对于该文件需要注意以下几点
第一:位置,该文件的位置是在res/xml/下的
第二:格式,PreferenceScreen为根标签,ListPreference为子标签

 
第三:标签属性含义
android:key 唯一标识符,和android:id相类似,PreferenceManager可以以其为参数通过 findPreference获取指定的 preference
android:title 整个屏幕的标题
android:summary 选项的简单说明


android:entries 弹出的对话框中,列表显示的文本内容,注意,这里指定的是一个数组
android:entryValues 与android:entries相对应的值
android:defaultValue 当对应值不存在时 的默认值
android:dialogTitle 弹出的对话框中的标题信息
-->

<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:key="screen_list"
    android:title="标题"
    android:summary="说明摘要" >
    
    <ListPreference
        android:key="myListPreference"
        android:title="标题"
        android:summary="说明摘要"
        android:entries="@array/list_entries"
        android:entryValues="@array/list_entries_value"
        android:dialogTitle="dialogTitle"
        android:defaultValue="@array/list_entries_value2"
    ></ListPreference>

</PreferenceScreen>


       res/values/arrays.xml为我们的list提供了 初始化数据


<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="list_entries">
        <item>山东</item>
        <item>福建</item>
        <item>北京</item>
        <item>河北</item>
    </string-array>
    
    <string-array name="list_entries_value">
        <item>shandong1</item>
        <item>fujian1</item>
        <item>beijing1</item>
        <item>hebei1</item>
    </string-array>
    
    <string-array name="list_entries_value2">
        <item>shandong2</item>
        <item>fujian2</item>
        <item>beijing2</item>
        <item>hebei2</item>
    </string-array>
</resources>


       当我们运行,并选择了福建时,我们可以查看在shared_prefes下的xml文件如下:  
       
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <string name="myListPreference">fujian1</string>
</map> 
   
       
       
       
       
       
       

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

免责声明:文章转载自《Android ListPreference的用法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python之数据类型详解eclipse快捷键及设置【转】下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

给tomcat配置manager-gui账号

1. 编辑/regulatoryreport/ups/apache-tomcat-8.5.51/conf/Catalina/localhost/manager.xml,添加下面内容: <Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/web...

格式化响应数据

格式化响应数据 原文:Formatting Response Data作者:Steve Smith翻译:刘怡(AlexLEWIS)校对:许登洋(Seay) ASP.NET Core MVC 内建支持对相应数据(response data)的格式化,用来修正格式或生成客户端指定的格式。 从 GitHub 上查看或下载相关样例。 特定格式的操作结果 某些操作...

即时聊天IM之一 XMPP协议简述

合肥程序员群:49313181。    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q  Q:408365330     E-Mail:egojit@qq.com  综述: 之前小规模的IM一直通过百度云推实现模拟IM,这种局限性比较多。公司很多的项目都需要IM集成,所以最终想想还是自己搭建XMPP服务器来实现IM功能。这样可控...

WinForm中使用DXperience控件中XtraForm,如何实现换肤

在DevExpress.XtraEditors.XtraForm中,窗体的样式和皮肤有UseDefaultLookAndFeel属性。设置为false,就可以直接再属性里面修改样式和皮肤了。如果设置为true,可以再里面放控件defaultLookAndFeel,设置defaultLookAndFeel的样式和皮肤,XtraForm窗体的样式和皮肤就可以随...

XML和JSON数据格式

目录 XML DTD(文档类型定义) DTD实体 JSON 使用python解析JSON数据 XML和JSON的区别  XML的优缺点 JSON的优缺点 XML和JSON都是web存储和传输过程中数据的格式,其中JSON 使用比较广泛,主要用来前后端交互数据。 XML XML(Extensible Markup Language)扩展标记语言 ,是一种常...

JAVA系列笔记十五之intellj idea

1.intellj idea中maven镜像配置 maven的配置地方如图所示:   maven的配置文件settings.xml存在于两个地方: 安装的地方:${M2_HOME}/conf/settings.xml 用户的目录:${user.home}/.m2/settings.xml 上图所示maven的安装目录为bundle 3,因idea中mav...