2012-05-30 45 views
9

私は特定のStringを保存するたびに、その配列に格納する方法で、共有環境設定にString配列を保存することが可能かどうか疑問に思っていました。SharedPreferencesに文字列配列を格納する

たとえば、お気に入りとしてマークする特定のIDの場所のリストがあります。 理想的な状況は、配列を持ち、その配列内に特定の位置ID(Location1と呼ぶ)を保存することです。次に、新しい場所をお気に入りとしてマークしたい(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

シリアル化された配列を読み書きするメソッドを記述します。これはあまり難しくありません。文字列の配列を単一の文字列に平坦化して、環境設定に格納します。もう1つの選択肢は、配列をXML構造に変換して、それを環境設定に保存することですが、それはおそらく過剰です。

23

これはなんとかです:I was just blogging about it

YOUR ARRAY RETRIEVE

//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(); 

YOUR ARRAY 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(); 

過去に

関連する問題