2014-02-15 3 views
5

Я сохраняю размер и данные arraylist в sharedPreference.When я получаю размер arraylist от sharedpreference, он дает точный размер, что когда-либо сохранял размер ранее. Но здесь я терпеть неудачу в сохранении данных Arraylist. Когда я получаю данные arraylist он всегда дает последний элемент arraylist.Как сохранить данные массива в SharedPreferences?

Вот мой код для сохранения размера ArrayList и данные:

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

Здесь я извлечение моих ArrayList пунктов:

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

      } 
     } 
    } 

Это мой код, что неправильно в моем коде, как я могу хранить arraylistitems в sharedpreference любой, пожалуйста, направьте меня ...

+0

Обратитесь к [save-arraylist-to-sharedpreferences] (http://stackoverflow.com/questions/7057845/save-arraylist-to-sharedpreferences) –

+0

см. Этот http://stackoverflow.com/questions/12150597/ save-an-arraylist-of-strings-to-shared-preferences – rajshree

ответ

4

попробуйте это.

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

этот вопрос уже ответил ниже нить., 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(); 
     } 
    } 

здесь у изменить taskclass как itemclass.

+0

спасибо за ответ. Когда я добавляю этот код set.addAll (mArrayList1); здесь я получаю Метод addAll (Collection ) в типе Set не применим для аргументов (ArrayList ) this error.My arrylist extends Items class..How можно добавить мой классовый arraylist в stringtypy arraylist , –

+0

User Set set = new HastSet () – RVG

+0

Этот putStringset не поддерживает уровень Api уровня 11. Как я могу сохранить данные arraylist в sharedpreference ниже api 11. –

Смежные вопросы