SharedPreferences的使用:

在这里也是偏向于使用android自带的SharedPreferences管理机制,简要说明使用流程,备忘:

首先在主activity里面初始化SharedPreferences,

SharedPreferences prefs=null;...@Override public void onCreate(Bundle savedInstanceState) {...prefs=PreferenceManager.getDefaultSharedPreferences(this);.../*注册SharedPreferences的监听器,一旦SharedPreferences发生变化,则触发监听器,进行一些操作,比如这里是通过SharedPreferences设置列表的排序方式,一旦排序方式的设置改变,则*SharedPreferences的存储内容改变,则触发监听器,进行列表的重新初始化*/prefs.registerOnSharedPreferenceChangeListener(prefListener);...}...private SharedPreferences.OnSharedPreferenceChangeListener prefListener=  new SharedPreferences.OnSharedPreferenceChangeListener() {  public void onSharedPreferenceChanged(SharedPreferences sharedPrefs, String key) {   if (key.equals("sort_order")) {//这里就是监听器的具体操作,通过判断是某一个SharedPreferences的变化,进行相应操作    initList();//重新初始化列表   }  } };..private void initList() {...model=helper.getAll(where, prefs.getString("sort_order", "name"));//在这里需要通过prefs.getString("sort_order", "name")获取SharedPreferences中存取的具体内容,即采取何种排列方式,如果结果为空,则返回"name",按姓名排序...}

上面则完成了对SharedPreferences的一系列操作,从初始化和注册监听器,监听变化,以及变化后做出相应操作,

那么是如何唤出SharedPreferences的设置界面,并且存储是如何实现的呢,
这里采用的是

  if (item.getItemId()==R.id.prefs) {   startActivity(new Intent(this, EditPreferences.class));  }

就是在菜单里加一个prefs设置选项,点击它则启动定义的SharedPreferences设置界面,这个界面就直接继承PreferenceActivity,可以方便高效的实现Preference的存储和管理.代码如下:

public class EditPreferences extends PreferenceActivity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);addPreferencesFromResource(R.xml.preferences);//这个方法的实现就内置了SharedPreferences的存储方法,所以无需我们自己再去存储SharedPreferences}}

代码是很简单的,只需要addPreferencesFromResource(R.xml.preferences);这个设置显示界面就可以了,

界面代码res/xml/preferences.xml:

<PreferenceScreen  xmlns:android="http://schemas.android.com/apk/res/android"><ListPreferenceandroid:key="sort_order"android:title="Sort Order"android:summary="Choose the order the list uses"android:entries="@array/sort_names"android:entryValues="@array/sort_clauses"android:dialogTitle="Choose a sort order" /></PreferenceScreen>

整个界面是一个PreferenceScreen,第二行,是一个ListPreference,key就相当于id,也是键值对的key,实际存储之后就是一个键值对的键,在前面的initList里面

model=helper.getAll(where, prefs.getString("sort_order", "name"));

我们就是用prefs.getString("sort_order","name");去获取内容的,很明显这里用到的就是key,

title就是ListPreference的标题,summary是简单说明用法,效果如下,显示位置很明显就体会到其用途了.

再有就是所显示的具体内容了,ListPreference里的选项是从哪里来的呢,来自

android:entries="@array/sort_names"

这个数组定义了要显示的内容,而下一行

android:entryValues="@array/sort_clauses"

这行定义了对应着你所选的选项,存储到SharedPreferences里面的内容,整个数组的资源代码如下

<?xml version="1.0" encoding="utf-8"?><resources><string-array name="sort_names"><item>By Name, Ascending</item><item>By Name, Descending</item><item>By Type</item><item>By Address, Ascending</item><item>By Address, Descending</item></string-array><string-array name="sort_clauses"><item>name ASC</item><item>name DESC</item><item>type, name ASC</item><item>address ASC</item><item>address DESC</item></string-array></resources>

比如我们在选择时,选择了第一个By Name, Ascending,那么系统自动帮你把name ASC存储到SharedPreferences里面,即

所存储的这条SharedPreferences为(SharedPreferences的存储方式就是xml文件的形式存储)

<stringname="sort_order">name ASC</string>

那么在看前面的这行代码

model=helper.getAll(where, prefs.getString("sort_order", "name"));

很明显,这个prefs所获取到的内容就是"name ASC",这行代码其实就是把参数传递到数据库帮助类里用来获取内容,而这个获取到的SharedPreferences就是设置的排序方式

更多相关文章

  1. Android视图篇之一:Android常见基本布局
  2. 设置ListView分割线
  3. EditText的hint位置和光标位置靠右
  4. layout布局属性、标签属性总结大全
  5. android设置窗口特性
  6. 如何为ListView设置分割线
  7. wheelView自定义android日期时间选择器
  8. android之【本地通知Notification】
  9. Android之省市县三级联动

随机推荐

  1. Android开发屏幕适配全攻略
  2. ubuntu上Android NDK调试配置
  3. android refbase类
  4. android实现音乐波动条形图
  5. Android如何解析Intent Filter
  6. Android系列之Content Provider
  7. IoT项目:Arduino使用Parse.com的Temboo向A
  8. 说说在 Android(安卓)中如何压缩图片
  9. Android(安卓)下的视频播放器faplayer 编
  10. android 操作sdcard中的多媒体文件(一)——