2012-01-03 3 views
1

정수 값을 가진 배열이 있습니다. 그것은 시간이 지남에 따라 자랄 것입니다. 대략 50 개의 값을가집니다. 배열을 지속적으로 저장하려고하므로 sharedpreferences에 저장하려고 생각했습니다. 복잡한 유형을 저장할 수 없다는 것을 알고 있지만 배열을 직렬화하고 sharedpreferences에 저장하는 것에 대해서도 들었습니다. 누군가가 나에게 힌트 또는 더 나은 샘플 코드를 제공 할 수 있습니까?sharedpreferences에 배열 저장

+0

이 [답변] (http://stackoverflow.com/questions/7175880/how-can-i-store-an-integer-array-in-sharedpreferences) –

답변

4
하지 매우 효율적인 방법

하지만이 작업이 완료 얻을 것이다 :

SharedPreferences prefs = ...; 
final int count = 50; 
final String KEY_COUNT = "COUNT"; 
final String KEY_VAL_PREFIX = "VAL_"; 
int values[] = new int[count]; 

/* 
* ... put some stuff in values[] ... 
*/ 

final Editor sped = prefs.edit(); 
sped.putInt(KEY_COUNT, count); 
for (int i = 0; i < count; i++) 
{ 
    sped.putInt(KEY_VAL_PREFIX + i, values[i]); 
} 
sped.commit(); 

그런 다음 나중에는 values2[i] = getInt(KEY_VAL_PREFIX + i, 0) 전화로 빈 배열을 채우는의 환경 설정에서 KEY_COUNT 값을 잡는하여 이러한 값을 검색 할 수 있습니다.

+0

: 다음을 참조 할 수도 있습니다. 이것으로 나를 도와주세요. http : //stackoverflow.com/questions/9209673/using-preferences-my-listview-is-empty-cant-store-data – George

+0

방금 ​​한 번 해보았습니다. – Josh

+0

@Josh는 getter와 setter에 대한 전체 코드를 포함 할 수 있습니까? – HeartlessArchangel

1

ObjectSerializer를 사용하여이를 수행 할 수 있습니다. 여기에 어떻게해야하는지에 대한 논의가 있습니다. Store Shared preferences

1

배열을 쉼표로 구분 된 값 문자열로 변환합니다. 그런 다음 문자열을 단일 키 - 값 쌍으로 저장하십시오.

그런 다음 배열을 추출하려면 간단히 split 함수를 사용하여 문자열을 쉼표 구분 기호를 기반으로 배열 요소로 분할하십시오.