Developer MJ Story

[Android/SharedPreference] SharedPreference ArrayList<String> 저장하기 본문

Software/Android

[Android/SharedPreference] SharedPreference ArrayList<String> 저장하기

집근처 2018. 2. 12. 11:25
반응형

안녕하세요.


집근처 개발자 입니다.


Android에서 제공하는 File 저장 서비스인 SharedPreference가 있습니다.

SharedPreference는 Int, Float, String 등의 기본 type의 data만 저장이 가능합니다.

문제는 개발하다보면 list형태의 data를 저장해야 하는 일이 발생합니다.


이럴때 저장할 수 있는 방법이 JSONString을 이용하면 list 형태의 data를 저장할 수 있습니다.

방법또한 간단합니다.

public void setStringArrayList(String key, ArrayList<String> valueList){ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext); SharedPreferences.Editor editor = prefs.edit(); JSONArray jsonArray = new JSONArray(); for(int i = 0; i < valueList.size(); i++){ jsonArray.put(valueList.get(i)); } if(!valueList.isEmpty()){ editor.putString(key, jsonArray.toString()); }else{ editor.putString(key, null); } } public ArrayList<String> getStringArrayList(String key){ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext); String json = prefs.getString(key, null); ArrayList<String> valueList = new ArrayList<>(); if(json != null){ try{ JSONArray jArray = new JSONArray(json); for(int i = 0; i < jArray.length(); i++){ String data = jArray.optString(i); valueList.add(data); } }catch(JSONException e){ Logger.e(tag, e.getMessage()); } } return valueList; }


위 함수를 그대로 사용하면 됩니다.

참 쉽죠?



반응형