2012-05-30 4 views
9

공유 환경 설정에 문자열 배열을 저장할 수 있는지 궁금 해서요. 특정 문자열을 저장할 때마다 해당 배열에 저장합니다.SharedPreferences에 문자열 배열 저장

예를 들어 내가 즐겨 찾기로 표시하려는 특정 ID가있는 위치 목록이 있습니다. 이상적인 상황은 배열을 가지고 특정 위치 ID (해당 위치를 1로 부름)를 해당 배열에 저장하는 것이므로 다음에 새로운 위치를 즐겨 찾기 (내가 Location2라고 부름)로 표시하고 싶을 때 그 배열을 검색합니다 지금까지 Location1이 포함되어 있으며 추가하려는 새 위치의 ID (Location2)를 추가합니다.

Android에는 원시 객체를 저장할 수있는 메소드가 있지만 배열에는 저장할 수 없습니다. 이 작업을 수행하기위한 모든 아이디어가 있습니까?

+0

AFAIK 공유 프리픽스는 프리미티브 데이터 형식으로 사용합니다. –

+0

http://stackoverflow.com/questions/7873682/is-it-possible-to-stored-classs-static-object-in-shared-preferenc e/7873759 # 7873759 –

답변

1

직렬화 된 배열을 읽고 쓰는 메소드를 작성하십시오. 이것은 너무 어렵지 않아야합니다. 문자열 배열을 단일 문자열로 단순화하여 기본 설정에 저장합니다. 또 다른 옵션은 배열을 XML 구조로 변환하여 환경 설정에 저장하는 것이지만 과장 될 수 있습니다.

23

이 행할 : I was just blogging about it :

배열 불러 오기

//String array[] 
//SharedPreferences prefs 
Editor edit = prefs.edit(); 
edit.putInt("array_size", array.length); 
for(int i=0;i<array.length; i++) 
    edit.putString("array_" + i, array[i]); 
edit.commit(); 

배열 SAVE

int size = prefs.getInt("array_size", 0); 
array = new String[size]; 
for(int i=0; i<size; i++) 
    prefs.getString("array_" + i, null); 

그냥 쓴 것이므로 오타가있을 수 있습니다.

+3

이 게시물의 답변을 확인하십시오. http://stackoverflow.com/questions/7057845/save-arraylist-to-sharedpreferences – AndroidLearner

+0

@Sherif elKhatib 매력처럼 작동합니다! 덕분에 많이 – noloman

+0

@ noloman 귀하의 환영 블로그의 기능을 확인 .. 더 일반적인 –

15

당신은 배열을 JSON 배열을 다음과 같이 저장할 수 :

SharedPreferences settings = getSharedPreferences("SETTINGS KEY", 0); 
try { 
    JSONArray jArray = new JSONArray(settings.getString("jArray", "")); 
} catch (JSONException e) { 
    e.printStackTrace(); 
} 

그냥 대체 솔루션 내가 사용하고 있습니다 : 당신은 다음과 같이 배열을 얻을 수 있습니다

SharedPreferences settings = getSharedPreferences("SETTINGS KEY", 0); 
SharedPreferences.Editor editor = settings.edit(); 

JSONArray jArray = new JSONArray(); 
try { 
    jArray.put(id); 
} catch (JSONException e) { 
    e.printStackTrace(); 
} 

editor.putString("jArray", jArray.toString()); 
editor.commit(); 

과거에는

관련 문제