2012-05-30 3 views
9

Ich frage mich, ob es möglich sein könnte, in den gemeinsamen Einstellungen ein Array von Strings zu speichern, so dass wir jedes Mal, wenn wir einen bestimmten String speichern, ihn in diesem Array speichern.Speichern eines String-Arrays in den SharedPreferences

Zum Beispiel habe ich eine Liste von Orten mit einer bestimmten ID, die ich als Favorit markieren möchte. Die ideale Situation wäre, ein Array zu haben und eine bestimmte Standort-ID (wir nennen es Location1) in diesem Array zu speichern, damit ich das nächste Mal, wenn ich einen neuen Standort als Favoriten markieren will (nennen wir es Location2), dieses Array abrufe (welches bis jetzt Location1) enthält und die ID dieses neuen Ortes, den ich hinzufügen möchte (Location2), hinzufüge.

Android verfügt über Methoden zum Speichern primitiver Objekte, jedoch nicht für Arrays. Irgendeine Idee, um dies zu tun, bitte?

+0

AFAIK shared Präferenzen verwenden für Primitive Datentyp –

+0

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

Antwort

1

Schreibmethoden zum Lesen und Schreiben eines serialisierten Arrays. Dies sollte nicht zu schwierig sein. Verkleinern Sie einfach das Array von Strings zu einer einzigen Zeichenfolge, die Sie in den Einstellungen speichern. Eine andere Option wäre, das Array in eine XML-Struktur zu konvertieren, die Sie dann in den Voreinstellungen speichern, aber das ist wahrscheinlich zu viel.

23

Dies ist machbar: I was just blogging about it:

IHRE ARRAY

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

abrufen ARRAY

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

Nur schrieb, dass es so Tippfehler geben könnte.

+3

Überprüfen Sie die Antworten dieses Posts. http://stackoverflow.com/questions/7057845/save-arraylist-to-sharedpreferences – AndroidLearner

+0

@Sherif elKhatib es funktioniert wie ein Charme! Vielen Dank – noloman

+0

@noloman Ihr Willkommen überprüfen Sie die Funktionen des Blogs .. mehr generische –

15

Sie könnten das Array eine JSON-Array machen und es dann wie folgt speichern:

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

Nur eine alternative Lösung, die ich verwendet habe:

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

Sie dann das Array wie folgt erhalten können in der Vergangenheit