您的位置:首页 > 移动开发 > Android开发

【慢慢学Android】:2.SharedPreferences对数据的存储

2012-05-25 16:19 423 查看
[b] SharedPreferences简介: [/b]

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

[b] 数据的存储: [/b]

1.构造函数:

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

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

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类来构造一个编辑器进行存储数据

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进行初始化

editor.putString(str_name,str_path);//添加数据
editor.commit(); //数据添加后必须提交才会修改xml文件
Toast.makeText(getApplicationContext(), "Successed", Toast.LENGTH_LONG).show();
}
});


删除数据

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.
[b] 数据的读取: [/b]

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中:

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


  还是挺好用的哈~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐