Hashmap을 Sharedpreferences에 저장하고 싶습니다.
조회수 2596회
안드로이드에서 리스트 뷰를 구성하고 있는데 글을 작성하는 액티비티에서 edit text를 통해 스트링 값들을 받고 그 값을 인텐트를 사용하여 메인 액티비티로 보내서 리스트 뷰에 넣어줬습니다. 그리고 나서 그 값들을 해쉬 맵에 넣어주고 그 값들을 프로그램이 꺼져도 저장하도록 Sharedpreferences를 통해 저장하고 싶습니다. 하지만 Sharedprefereces가 기본형 타입만 저장할 수 있다는 문제때문에 어떻게 해야 할지 생각이 막히네요..
String test1 = data.getStringExtra("tex1");
String test2 = data.getStringExtra("tex2");
String test3 = data.getExtras().getString("tex3"); //인텐트를 받아서 스트링으로 저장
arItem.add(new ListViewItem(test1, test2, test3)); // 인텐트들을 추가
ArrayList<HashMap<String , String>> aritem_hash= new ArrayList<HashMap<String , String>>();
for(ListViewItem item : arItem){
HashMap map = new HashMap();
map.put("Date",item.DateSrc);
map.put("Title",item.titleStr);
map.put("Local",item.LocalStr);
aritem_hash.add(map);
} //해쉬맵으로 저장
1 답변
-
HashMap을 serialize 해서 저장하고, 읽을 때는 deserialize 해서 복원하면 되지 않을까요?
// 저장하기 SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE); Editor editor = prefs.edit(); try { editor.putString(STORED, ObjectSerializer.serialize(aritem_hash)); } catch (IOException e) { e.printStackTrace(); } editor.commit();
// 복원하기 SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE); try { aritem_hash = (ArrayList<HashMap<String , String>>) ObjectSerializer.deserialize(prefs.getString(STORED, ObjectSerializer.serialize(new ArrayList<task>()))); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); }
댓글 입력