Android本地最簡單的資料儲存,沒有之一(讓SharedPreferences存取JavaBean物件或List<Bean>)

NO IMAGE

不想用SQLite,不想用xml本地儲存的同學,SharedPreferences那就簡直了,如果要想假裝用個資料庫,更準確說想用個假資料庫,那就不要錯過了,SharedPreferences做個小app資料儲存,應付畢業設計在筆者看來就足夠了。

1.什麼是SharedPreferences

我們在開發軟體的時候,常需要向使用者提供軟體引數設定功能,例如我們常用的微信,使用者可以設定是否允許陌生人新增自己為好友.對於軟體配置引數的儲存,如果是在window下通常我們會採用ini檔案進行儲存.如果是J2EE下面,我們會採用properties屬性檔案或者xml進行儲存.在我們的Android應用中又適合採用什麼方式儲存軟體配置引數呢?
Android平臺給我們提供了一個SharedPreferences類,它是一個輕量級應用程式內部輕量級的儲存方案,特別適合用於儲存軟體配置引數,比如boolean,int,float,long,String等資料.使用SharedPreferences以key-value(鍵值對)的形式進行儲存,其實質是採用了xml檔案存放資料,路徑為:/data/data/< package name>/shared_prefs.

2.SharedPreferences存取物件的思路

1.

  1. 因為javabean物件是Object型別的,不能直接儲存,需要首先先將javabean物件轉換成json字串,再以鍵值對的方式儲存在SharedPreferences中 。也就實現了sp儲存物件。
  2. 如果儲存型別是List< bean> ,也把List物件轉為json。再以鍵值對的方式儲存在sp中。

2.

從sp中取得json,再由json轉換成物件形式。

3.

如果sp中只存了一個物件,那麼可以將整個sp刪除,如果存了一個List ,想刪除其中某個物件,先將json轉換為List物件, 使用list.remove(position) ;方法移除位置為position的物件,再將List重新生成json,最後覆蓋儲存sp中即可。

4.

思路同上。

3.實現

1. 儲存單個JavaBean

SharedPreferences sp = getSharedPreferences("SP_PEOPLE",Activity.MODE_PRIVATE);//建立sp物件,如果有key為"SP_PEOPLE"的sp就取出,否則就建立一個此key的sp物件
People people= new People() ;//建立javabean物件
people.setId(1);  
people.setName("小邵");
Gson gson = new Gson();  
String jsonStr=gson.toJson(people); //將物件轉換成Json
editor = sp.edit() ;
editor.putString("KEY_PEOPLE_DATA", jsonStr) ; //存入json串
editor.commit() ; //提交
ShowDialog("您已經儲存成功");  

2. 儲存JavBean的List集合

SharedPreferences sp = getSharedPreferences("SP_PEOPLE_List",Activity.MODE_PRIVATE);//建立sp物件
List<People> peopleList = new ArrayList<People>() ; //建立List集合物件
People people1= new People() ;//建立javabean物件
people1.setId(1);  
people1.setName("小邵"); 
People people2= new People() ;//建立javabean物件
people2.setId(2);  
people2.setName("小林"); 
peopleList.add(people1);
peopleList.add(people2);
Gson gson = new Gson();  
String jsonStr=gson.toJson(peopleList); //將List轉換成Json
SharedPreferences.Editor editor = sp.edit() ;
editor.putString("KEY_PEOPLE_LIST_DATA", jsonStr) ; //存入json串
editor.commit() ;  //提交
ShowDialog("您已經儲存成功");  

3. 從SP中查詢一個JavaBean

SharedPreferences sp = getSharedPreferences("SP_PEOPLE",Activity.MODE_PRIVATE);//建立sp物件,如果有key為"SP_PEOPLE"的sp就取出
peopleJson = sp.getString("KEY_PEOPLE_DATA","");  //取出key為"KEY_PEOPLE_DATA"的值,如果值為空,則將第二個引數作為預設值賦值
if(peopleJson!="")  //防空判斷
{
Gson gson = new Gson();  
People people = gson.fromJson(peopleJson, People.class); //將json字串轉換成 people物件
}

4. 從SP中查詢javaBean集合

SharedPreferences sp = getSharedPreferences("SP_PEOPLE_LIST",Activity.MODE_PRIVATE);//建立sp物件,如果有key為"SP_PEOPLE"的sp就取出
peopleListJson = sp.getString("KEY_PEOPLE_LIST_DATA","");  //取出key為"KEY_PEOPLE_DATA"的值,如果值為空,則將第二個引數作為預設值賦值
if(peopleJson!="")  //防空判斷
{
Gson gson = new Gson();  
List<People> peopleList = gson.fromJson(peopleListJson, new TypeToken<List<People>>() {}.getType()); //將json字串轉換成List集合
}

5. 刪除一個JavaBean

直接把sp幹掉。

SharedPreferences sp = getSharedPreferences("SP_PEOPLE",Activity.MODE_PRIVATE);//建立sp物件,如果有key為"SP_PEOPLE"的sp就取出
peopleJson = sp.getString("KEY_PEOPLE_DATA","");  
SharedPreferences.Editor editor = sp.edit() ;
editor.clear();
editor.commit();

6. 刪除List中的某個javaBean

1.先取,
2.轉換成List,
3.從List中刪掉,
4.轉換成新List,
5.存入新json串將原先的替換掉。

SharedPreferences sp = getSharedPreferences("SP_PEOPLE_LIST",Activity.MODE_PRIVATE);
peopleListJson = sp.getString("KEY_PEOPLE_LIST_DATA","");  
if(peopleJson!="")  //防空判斷
{
Gson gson = new Gson();  
List<People> peopleList = gson.fromJson(peopleListJson, new TypeToken<List<People>>() {
}.getType()); //1.2. 取出並轉換成List
peopleList.remove(position) ; //3.移除第position個的javabean
String jsonStr=gson.toJson(peopleList); //4.將刪除完的List轉換成Json
SharedPreferences.Editor editor = sp.edit() ;
editor.putString("KEY_PEOPLE_LIST_DATA", jsonStr) ; //存入json串
editor.commit() ;  //提交
}

7. 更新

先取,將要改變的bean更新了 ,轉換成List,存入新json串將原先的替換掉。

SharedPreferences sp = getSharedPreferences("SP_PEOPLE_LIST",Activity.MODE_PRIVATE);
peopleListJson = sp.getString("KEY_PEOPLE_LIST_DATA","");  
if(peopleJson!="")  //防空判斷
{
Gson gson = new Gson();  
List<People> peopleList = gson.fromJson(peopleListJson, new TypeToken<List<People>>() {
}.getType()); //取出
**// 省略的操作:取出,更新bean的操作,新增到List,將新List轉換成json**
SharedPreferences.Editor editor = sp.edit() ;
editor.putString("KEY_PEOPLE_LIST_DATA", jsonStr) ; //存入json串
editor.commit() ;  //提交
}

版權宣告
author :shaoduo
原文來自:http://blog.csdn.net/shaoduo
其他出處均為轉載,原創作品,歡迎讀者批評指正。