`
dcj3sjt126com
  • 浏览: 1825520 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SharedPreferences对数据的存储

 
阅读更多

SharedPreferences简介:                                                                         

      SharedPreferences是Android平台上一个轻量级的存储类,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息,比如窗口状态,一些小型自定义数据等。其存储位置在/data/data/<包名>/shared_prefs目录下,可以通过DDMS--FileExplorer下查看(选中文件点击DDMS右上角的导出文件)。

   数据的存储:                                                                                             

   1.构造函数:   

如示例,一般常用的构造函数为2个参数

第一个为sp的名称,第二个一般为权限比如Activity.MODE_PRIVATE, MODE_APPEND, MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Calc extends Activity {
    public static final String PREFS_NAME = "MyPrefsFile";
 
    @Override
    protected void onCreate(Bundle state){
       super.onCreate(state);
       . . .
 
       // Restore preferences
       SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
       boolean silent = settings.getBoolean("silentMode", false);
       setSilent(silent);
    }

  

   2.数据的存储以及修改:   

使用SharedPreferences.Editor类来构造一个编辑器进行存储数据

1
2
3
4
5
6
7
8
add.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                String str_name = (String) name.getText();
                String str_path = (String) text.getText();
                SharedPreferences Addresses = getSharedPreferences(PREFS_NAME,Activity.M );
                SharedPreferences.Editor editor = Addresses.edit();//通过SharedPreferences.edit()来对Editor进行初始化
1
editor.putString(str_name,str_path);//添加数据 <br>                                                            editor.commit(); //数据添加后必须提交才会修改xml文件 <br>                               Toast.makeText(getApplicationContext(), "Successed", Toast.LENGTH_LONG).show(); <br>                         } <br>                        });

删除数据

1
2
3
4
5
6
7
8
9
10
public boolean onItemLongClick(AdapterView<?> parent, View view,
                    int position, long id) {
                SharedPreferences Addresses = getSharedPreferences(PREFS_NAME,
                        Activity.MODE_PRIVATE);
                SharedPreferences.Editor editor = Addresses.edit();    //通过SharedPreferences.edit()来对Editor进行初始化
                editor.remove((String) listview.getSelectedItem());    //删除相应的数据
                                           editor.commit();   //同样需要提交
                                }
 
        });

   3.一些常用的方法:   

void apply()
Commit your preferences changes back from this Editor to the SharedPreferences object it is editing.
 SharedPreferences.Editor clear()
Mark in the editor to remove all values from the preferences.
boolean commit()
Commit your preferences changes back from this Editor to the SharedPreferences object it is editing.
 SharedPreferences.Editorput Boolean(String key, boolean value)
Set a boolean value in the preferences editor, to be written back once commit() or apply() are called.
 SharedPreferences.Editor putInt(String key, int value)
Set an int value in the preferences editor, to be written back once commit() or apply() are called.
 SharedPreferences.Editor putString(String key, String value)
Set a String value in the preferences editor, to be written back once commit() or apply() are called.
 SharedPreferences.Editor putStringSet(String key, Set<String> values)
Set a set of String values in the preferences editor, to be written back once commit() is called.
 SharedPreferences.Editor remove(String key)
Mark in the editor that a preference value should be removed, which will be done in the actual preferences once commit() is called.

 

   数据的读取:                                                                                            

SharedPreferences.Editor edit()
Create a new Editor for these preferences, through which you can make modifications to the data in the preferences and atomically commit those changes back to the SharedPreferences object.
Map<String, ?> getAll()
Retrieve all values from the preferences.
boolean getBoolean(String key, boolean defValue)
Retrieve a boolean value from the preferences.
 String getString(String key, String defValue)
Retrieve a String value from the preferences.
 Set<String> getStringSet(String key, Set<String> defValues)
Retrieve a set of String values from the preferences.
void registerOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener listener)
Registers a callback to be invoked when a change happens to a preference.
void unregisterOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener listener)
Unregisters a previous callback.
 

   使用getAll()读取所有数据存储在一个HashMap中:

1
2
3
        listview = (ListView) findViewById(R.id.lv);
SharedPreferences Addresses = getSharedPreferences(PREFS_NAME, 0);
listItems = (HashMap<String, Object>) Addresses.getAll();

  还是挺好用的哈~~

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics