1. 程式人生 > >androidのSharedPreferences儲存集合物件

androidのSharedPreferences儲存集合物件

由於getSharedPreferences是依賴於上下文環境的,即為context,無論哪個類中,一定要通過activity類的context才能呼叫。

   在類繼承了activity中使用時。       宣告一個 private Context context;        可以在oncreate()方法中,採用 context=this;   在類繼承了Fragment中時,      可以在oncreate()方法中,採用 getActivity();      getActivity().getSharedPreferences("dialmenu",....... ***********************************************************************************************************************

接著看下,使用sharedpreference 如何儲存集合物件的

        public static String SceneList2String(HashMap<Integer, Boolean> hashmap)
			throws IOException {
		// 例項化一個ByteArrayOutputStream物件,用來裝載壓縮後的位元組檔案。
		ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
		// 然後將得到的字元資料裝載到ObjectOutputStream
		ObjectOutputStream objectOutputStream = new ObjectOutputStream(
				byteArrayOutputStream);
		// writeObject 方法負責寫入特定類的物件的狀態,以便相應的 readObject 方法可以還原它
		objectOutputStream.writeObject(hashmap);
		// 最後,用Base64.encode將位元組檔案轉換成Base64編碼儲存在String中
		String SceneListString = new String(Base64.encode(
				byteArrayOutputStream.toByteArray(), Base64.DEFAULT));
		// 關閉objectOutputStream
		objectOutputStream.close();
		return SceneListString;
	}

	@SuppressWarnings("unchecked")
	public static HashMap<Integer, Boolean> String2SceneList(
			String SceneListString) throws StreamCorruptedException,
			IOException, ClassNotFoundException {
		byte[] mobileBytes = Base64.decode(SceneListString.getBytes(),
				Base64.DEFAULT);
		ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(
				mobileBytes);
		ObjectInputStream objectInputStream = new ObjectInputStream(
				byteArrayInputStream);
		HashMap<Integer, Boolean> SceneList = (HashMap<Integer, Boolean>) objectInputStream
				.readObject();
		objectInputStream.close();
		return SceneList;
	}

	public static boolean putHashMap(Context context, String key,
			HashMap<Integer, Boolean> hashmap) {
		SharedPreferences settings = context.getSharedPreferences(
				PREFERENCE_NAME, Context.MODE_PRIVATE);
		SharedPreferences.Editor editor = settings.edit();
		try {
			String liststr = SceneList2String(hashmap);
			editor.putString(key, liststr);
		} catch (IOException e) {
			e.printStackTrace();
		}
		return editor.commit();
	}

	public static HashMap<Integer, Boolean> getHashMap(Context context,
			String key) {
		SharedPreferences settings = context.getSharedPreferences(
				PREFERENCE_NAME, Context.MODE_PRIVATE);
		String liststr = settings.getString(key, "");
		try {
			return String2SceneList(liststr);
		} catch (StreamCorruptedException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}
以上方法做的轉換,putHashMap() 是儲存物件的,,getHashMap()是獲取集合物件。  其他不做過多介紹,方便大家拿過來直接使用即可。

相關推薦

androidSharedPreferences儲存集合物件

由於getSharedPreferences是依賴於上下文環境的,即為context,無論哪個類中,一定要通過activity類的context才能呼叫。    在類繼承了activity中使用時。       宣告一個 private Context context;        可以在oncreat

Android 中使用SharedPreferences儲存通用物件

由於最近開發的專案在趕進度實在是太忙了 ,也沒時間去更新部落格文章,今天寫寫關於在實際開發中使用 使用SharedPreferences 來儲存通用的物件的方法.對大對數開發這來說使用SharedPr

如何用android sharedpreferences儲存List集合

在Android開發過程中有時需要用到一些簡單的資料儲存。 在系統自帶的sharedpreferences中提供了一些列的資料型別,但有時候需要儲存一個List集合,系統則沒有現成的方法: 以儲存場景為例: public static String SceneLis

Android SharedPreferences儲存和讀取物件

SharedPreferences儲存和讀取物件 1.首先要序列化物件(下面是序列化實體類的例子,不方便貼出實體類所有的程式碼) public class LoginResult extends BaseResult implements Serializable{

Android SharedPreferences儲存詳解

什麼是SharedPreferences儲存 一種輕量級的資料儲存方式 類似於我們常用的ini檔案,用來儲存應用程式的一些屬 性設定、較簡單的引數設定。 儲存現場:儲存使用者所作的修改或者自定義引數設定, 當再次啟動程式後回覆上次退出時的狀態。 將NVP(Na

Android SharedPreferences儲存登入狀態

SharedPreferences是Android中一種資料持久化方法,採用鍵值對的方式儲存資料,這裡我以儲存登入狀態為例,簡述SharedPreferences的使用。首先,我們在使用者登入時,儲存SharedPreferences,向SharedPreferences.e

android SharedPreferences 儲存異常

最近遇到 SharedPreferences 儲存出現了異常 在此做下記錄; 最近專案使用了 SharedPreferences 儲存標誌位時 明明已經把 key 值已經remove掉 ,但是 當讀取時還是讀到了 最開始儲存的值; 最後發現 原來有一個

Android SharedPreferences儲存資料的使用方法

public class Main extends Activity  {  @Override  public void onCreate(Bundle savedInstanceState)  {  super.onCreate(savedInstanceState);  setContentView

sharedpreference 如何儲存集合物件

public static String SceneList2String(HashMap<Integer, Boolean> hashmap) throws IOException { // 例項化一個ByteArrayOutputStream物件,用來裝載壓縮後的位

Android使用SharedPreferences儲存物件

1、將要儲存的物件進行序列化實現implements Serializable介面 2、給序列化介面配置ID serialVersionUID,如果沒有配置ID後面版本物件如做改變,將和以前版本衝突,ID要在工程中唯一,可以使用eclipse自動生成 3

android開發之SharedPreferences儲存物件

因為作者最近在做一個收藏的功能,涉及到了資料的儲存和讀取,又因為太懶,不想去使用ContentProvider,所以種種原因讓我選擇了使用SharedPreferences來儲存資料,但是儲存一條、兩條單獨的資料是可以的,但是要儲存物件!作者只能說咋搞!怕啥,一步一步的來嘛

Android使用Gson和SharedPreferences儲存物件

Android儲存檔案通常可以用SharedPreferences、SQLite、Content Provider和File,但是SharedPreferences只支援簡單的key-value, 通常,如果要儲存一個物件,可以先把它序列化,然後用輸入輸出流存進file檔案

android EOFException異常解決辦法 (SharedPreferences儲存物件

SharePreferences可以儲存String 但是不能儲存物件 這不符合面向物件。 為此可以通過序列化和反序列化將Serializable物件和字串相互轉化  所以可以將Serizlizable物件轉化為字串儲存到SharedPreferences中 Shar

android應用儲存使用者資訊,map集合與使用者物件儲存

場景描述:使用者在登入之後,伺服器返回使用者的基本資訊,比如使用者的ID,Token等資訊,這時,我們需要將使用者的資訊進行儲存,以方便在其他頁面進行呼叫。使用SharedPrefrences對整個使用者物件進行儲存。 User 屬性nickName、userHead、i

Android中對集合中的物件進行排序

最近需要一個對圖片物件進行排序的功能。 思路: 1、新建一個類實現Comparator<?>,這個類是實現比較的關鍵類,一般做比較的型別為int或String。 public class OrderSortUtil implements Comparator<

Android學習之SharedPreferences儲存小練習

  SharedPreferences是Android平臺上一個輕量級的儲存類,用來儲存應用的一些常用配置,比如Activity狀態,Activity暫停時,將此activity的狀態儲存到SharedPereferences中;當Activity過載,系統回撥方法onSav

Android SharedPreferences工具類 ,實現List/Map的儲存讀取

最近因為需要將List集合和Map集合的資料儲存到SharedPreferences中,所以對以前自己封裝的SharedPreferencesUtil進行了修改,在原有的儲存讀Integer,String,Float,Long,Boolean,Object的基礎上增加了儲存讀取List<Obj

Android基礎(二)資料儲存1.SharedPreferences儲存

SharedPreferences經常用來儲存一些預設歡迎語,使用者登入名和密碼等簡單資訊,一般用於儲存量小的資訊 exampleHelper.java import android.content.Context; import android.content

Android中的資料儲存一(檔案儲存SharedPreferences儲存)

一.檔案儲存 檔案儲存不對儲存的內容進行處理,適合用於儲存一些簡單的文字資料或二進位制資料。如果要儲存較為複雜的文字資料,就要定義一套自己的格式規範。 1.將資料儲存到檔案中 Context類中有一個 openFileOutput(String name, int mo

[Android]SharedPreferences資料儲存

應用 Android開發中,需要將少量簡單型別的資料儲存在本地,比如幾個字串,一般選擇使用SharedPreferences來儲存。 SharedPreferences:一個輕量級的儲存類,特別適合用於儲存軟體配置引數。使用xml檔案存放資料,檔案存放在/data/data/<pa