2014-02-15 19 views
5

Ich speichere Arraylist Größe und Daten in sharedPreference.Wenn ich die Arraylist Größe von Sharedreference es gibt die genaue Größe, was auch immer die Größe speichern previous.Aber hier bin ich Fehler beim Speichern von Arraylist Daten.Wenn ich die Arraylist Daten abrufen es gibt immer den letzten arraylist.Wie speichern Sie die ArrayList-Daten in SharedPreferences?

Hier ist mein Code Arraylist Größe und Daten zum Speichern:

ArrayList<Items> mArrayList1 = new ArrayList<Items>(); 
if(mArrayList1 == 0){ 
    mStoreItem.setItem(id); 
    mArrayList1.add(mStoreItem); 
    int size = mArrayList1.size(); 
    System.out.println("array list size : " + size); 
    MyPreferences.savePreferences(getActivity(), 
        "arraylist_size", Integer.toString(size)); 
    for (int i = 0; i < mArrayList1.size(); i++) { 
     String id = mArrayList1.get(i) 
       .getItem(); 
     MyPreferences.savePreferences(getActivity(), 
         "id", id); 
      } 
} else if(mArrayList1 > 0){ 
    mStoreItem.setItem(id); 
    mArrayList1.add(mStoreItem); 
    int size = mArrayList1.size(); 
    System.out.println("arrayList size : " + size); 
    MyPreferences.savePreferences(getActivity(), 
        "arraylist_size", Integer.toString(size)); 
    for (int i = 0; i < mArrayList1.size(); i++) { 
     String id = mArrayList1.get(i) 
       .getItem(); 
     MyPreferences.savePreferences(getActivity(), 
         "id", id); 
      } 
} 

Hier lese ich meine Arraylist Artikel bin Abrufen:

String getListSize = MyPreferences.savePreferences(getActivity(), 
        "arraylist_size"); 
System.out.println("arrayList size : " + getListSize); 
    if (!getListSize.equals("")) { 
     int listSize = Integer.parseInt(getListSize); 

     if (listSize > 0) { 
      for (int i = 0; i < listSize; i++) { 
       String getListitems = MyPreferences 
         .getPreferences(getActivity(), "id"); 
    System.out.Println("list items : "+ getListItems); 

      } 
     } 
    } 

Das ist mein Code ist das, was in meinem Code falsch, wie ich speichern kann die arraylistitems in sharedreference irgendeinen bitte führen Sie mich ...

+0

Siehe [save-arraylist-to-sharedpreferences] (http://stackoverflow.com/questions/7057845/save-arraylist-to-sharedpreferences) –

+0

referenzieren http://stackoverflow.com/questions/12150597/ save-an-arraylist-of-strings-to-shared-Einstellungen – rajshree

Antwort

4

versuchen Sie dies.

//Set the values 
Set<String> set = new HashSet<String>(); 
set.addAll(mArrayList1); 
scoreEditor.putStringSet("key", set); 
scoreEditor.commit(); 

//Retrieve the values 
Set<String> set = new HashSet<String>(); 
set = myScores.getStringSet("key", null); 

diese Frage bereits unter Thread beantwortet., Save ArrayList to SharedPreferences

public void addTask(Task t) { 
     if (null == currentTasks) { 
      currentTasks = new ArrayList<task>(); 
     } 
     currentTasks.add(t); 

     //save the task list to preference 
     SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE); 
     Editor editor = prefs.edit(); 
     try { 
      editor.putString(TASKS, ObjectSerializer.serialize(currentTasks)); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     editor.commit(); 
    } 

public void onCreate() { 
     super.onCreate(); 
     if (null == currentTasks) { 
      currentTasks = new ArrayList<task>(); 
     } 

     //  load tasks from preference 
     SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE); 

     try { 
      currentTasks = (ArrayList<task>) ObjectSerializer.deserialize(prefs.getString(TASKS, ObjectSerializer.serialize(new ArrayList<task>()))); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } 
    } 

hier u die taskclass als itemClass ändern.

+0

Danke für die Antwort. Wenn ich diesen Code add set.addAll (mArrayList1); hier bekomme ich die Methode addAll (Collection ) in der Art Set ist nicht anwendbar für die Argumente (ArrayList ) dieser Fehler.Meine Arrylist erweitert Items Klasse .. Wie kann ich meine Classtype Arraylist in Stringtypy Arraylist hinzufügen . –

+0

Benutzer-Set set = new HastSet () – RVG

+0

Dieses putStringset unterstützt nicht die unten stehende Api-Stufe 11.Wie kann ich meine Arraylist-Daten in sharedreference unter api 11 speichern? –

Verwandte Themen