Hashmap을 Sharedpreferences에 저장하고 싶습니다.


안드로이드에서 리스트 뷰를 구성하고 있는데 글을 작성하는 액티비티에서 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);

                }  //해쉬맵으로 저장

조회수 90


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();
  }
  • 2016년 10월 13일에 작성됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close