1. 程式人生 > >android開發之SharedPreferences儲存物件

android開發之SharedPreferences儲存物件

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

第一步:在csdn網站,下載“commons-codec-1.4.jar”

第二步:

public class Obj2SharedUtils {
    public static void saveFavorites_Entity(Context context,Favorites_Entity entity,String id) {
        SharedPreferences preferences = context.getSharedPreferences("myfavorites",context.MODE_PRIVATE);
        // 建立位元組輸出流
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try {
            // 建立物件輸出流,並封裝位元組流
            ObjectOutputStream oos = new ObjectOutputStream(baos);
            // 將物件寫入位元組流
            oos.writeObject(entity);
            // 將位元組流編碼成base64的字元竄
            String favorites_Base64 = new String(Base64.encodeBase64(baos.toByteArray()));
            SharedPreferences.Editor editor = preferences.edit();
            editor.putString(id, favorites_Base64);
            editor.commit();
        } catch (IOException e) {
        }
        Log.e("ok", "儲存成功");
    }

    public static  Favorites_Entity readFavorites_Entity(Context context,String id) {
        Favorites_Entity entity = null;
        SharedPreferences preferences = context.getSharedPreferences("myfavorites",context.MODE_PRIVATE);
        String favoritesBase64 = preferences.getString(id, "");

        //讀取位元組
        byte[] base64 = Base64.decodeBase64(favoritesBase64.getBytes());

        //封裝到位元組流
        ByteArrayInputStream bais = new ByteArrayInputStream(base64);
        try {
            //再次封裝
            ObjectInputStream bis = new ObjectInputStream(bais);
            try {
                //讀取物件
                entity = (Favorites_Entity) bis.readObject();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        } catch (StreamCorruptedException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return entity;
    }
}

第三步:

infos_favorites = (ImageView)findViewById(R.id.infos_favorites);
infos_favorites.setOnClickListener(new OnClickListener() {
	@Override
	public void onClick(View v) {
		f_Entity = new Favorites_Entity();
		if(sp.getString(id,"0").equals(id)) {
			sEditor.remove(id);
			sEditor.commit();
			editor.putString(id,"0");
			editor.commit();
			infos_favorites.setImageResource(R.drawable.icon7);
			Toast.makeText(News_Infos_Activity.this,"取消收藏",Toast.LENGTH_SHORT).show();
			return;
		}
		Log.e("收藏id",id);
		editor.putString(id,id);
		editor.commit();
		infos_favorites.setImageResource(R.drawable.icon8);
		f_Entity.setFavorites_Id(id);
		f_Entity.setFavorites_Url(url);
		f_Entity.setFirst_typeid(entity.getFirst_typeid());
		f_Entity.setFavorites_Title(entity.getNews_title());
		sd = sdf.format(new Date());
		f_Entity.setFavorites_Time(sd);
		//將物件儲存到SharedPreferences中
		Obj2SharedUtils.saveFavorites_Entity(News_Infos_Activity.this,f_Entity,id);
		Toast.makeText(News_Infos_Activity.this,"收藏成功",Toast.LENGTH_SHORT).show();
	}
});

相關推薦

android開發SharedPreferences儲存物件

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

Android學習SharedPreferences儲存小練習

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

Android開發SharedPreferences詳解

一、概述 利用SharedPreferences儲存資料是Android本地儲存資料的方式之一。SharedPreferences主要用於儲存基本型別的資料,例如int、long、string、Boo

android開發利用SharedPreferences儲存字串陣列

1.Android3.0之後,SharedPreferences提供了putStringSet方法,可以儲存字串陣列,例子: SharedPreferences sp = mContext.getSharedPreferences("data", Context.MO

Android使用SharedPreferences儲存物件

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

android開發應用Crash自動抓取Log_自動儲存崩潰日誌到本地

應用發生crash之後要檢視log,判斷問題出在什麼地方,可是一旦應用釋出出去,就要想辦法把使用者的崩潰日誌拿到分析。所以要在發生crash之後抓取log,然後上傳到伺服器,方便開發者檢視,現在都有很多第三方做這方面的服務,這裡說下如何自己來實現。其實原理很簡單,應用出現異常

Android 中使用SharedPreferences儲存通用物件

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

android開發Fragment利用Bundle儲存狀態

相信很多小夥伴們在使用Fragment都會遇到狀態儲存的問題,今天介紹一個簡單的案例。 大家都知道在使用Activity之間傳遞資料時大部分情況下都是用Bundle; 先幫大家複習一下Bundle,利用鍵值對(key-value)來儲存資料的,內部包含ArrayMap<

Android使用Gson和SharedPreferences儲存物件

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

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

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

Android 效率開發圖片儲存到相簿

為了讓系統圖庫和其他應用APP能使用這張圖片,我們需要呼叫系統的掃描讓這張圖片記錄到Media provider 的資料庫中,方法如下:private void galleryAddPic() {

Android開發getX,getRawX,getWidth,getTranslationX等的區別

save string hlist getwidth sta 是我 touch 項目 寬度 轉載請註明出處:http://blog.csdn.net/dmk877/article/details/51550031 好久沒寫博客了,最近工作確實挺忙的,剛剛結束了一個

Android 開發Windows環境下Android Studio安裝和使用教程(圖文詳細步驟)

9.png 虛擬機 jdk版本 編寫 clip 開發平臺 集成開發 arc 電腦安裝 鑒於谷歌最新推出的Android Studio備受開發者的推崇,所以也跟著體驗一下。 一、介紹Android Studio Android Studio 是一個Android

Android開發AudioManager(音頻管理器)具體解釋

應該 數量 service eth out 開發 要求 type 路由 AudioManager簡單介紹: AudioManager類提供了訪問音量和振鈴器mode控制。使用Context.getSystemService(Context.AUDIO_SERVICE)

【入門篇】ANDROID開發BUG專講

world 自然 執行 類型 效率 str 積累 全部 href 話說諸葛亮是一個優秀的程序員,每個錦囊都是應對不同的case而編寫的。可是優秀的程序員也敵只是更優秀的bug。六出祈山。七進中原,鞠躬盡瘁,死而後已的諸葛亮僅僅由於有一

android開發merge結合include優化布局

ted com match clas you title example ews 文件的 merge結合include優化android布局,效果不知道。個人感覺使用上也有非常大的局限。只是還是了解一下。記錄下來。 布局文件都要有根節點,但androi

Android開發增量更新

avt exp chm 這一 font ams extern city ron 一、使用場景 apk升級,節省服務器和用戶的流量 二、原理 自從 Android 4.1 開始, Google Play 引入了應用程序的增量更新功能,App使用該升級方式,可節省約2/3

Android開發布局文件裏實現OnClick事件關聯處理方法

intent dsm nbsp ext 關聯 you vertica findview 時間 一般監聽OnClickListener事件,我們都是通過Button button = (Button)findViewById(....); button.se

Android 開發 ---- bootloader (LK)

ttl tab 不同的 opera 指定 isa system void mem LK是什麽 LK 是 Little Kernel 它是 appsbl (Applications ARM Boot Loader)流程代碼 ,little kernel

Android開發SharedPreferences 存儲數據、獲取數據

.get 本地 www phone win7 popu ces androi studio Android開發:SharedPreferences 存儲數據、獲取數據 email:[email protected]/* */ 開發環境:w