2012-06-25 9 views
9

Czy mimo to mogę zapisać zmienną listy w wewnętrznej lub zewnętrznej pamięci telefonu urządzenia Android? Wiem, że mogę zapisać prymitywne dane, ale nie jestem pewien na ten temat.Zapisz listę Androida <String>

Z góry dziękuję.

+0

Jaką metodę próbujesz użyć, aby ją zapisać? –

+0

Użyj SQLite :) lekki db – iNan

+2

http://stackoverflow.com/questions/3876680/is-it-possible-to-add-an-array- or-object-to-sharedpreferences-on-android –

Odpowiedz

19

Tak dokładnie można zapisać tylko prymitywy więc można coś takiego:

List<String> list = new ArrayList<String>(); 
list.add("one"); 
list.add("two"); 

StringBuilder csvList = new StringBuilder(); 
for(String s : list){ 
     csvList.append(s); 
     csvList.append(","); 
} 

sharedPreferencesEditor.put("myList", csvList.toString()); 

Następnie stworzyć swój list znowu byś:

String csvList = sharedPreferences.getString("myList"); 
String[] items = csvList.split(","); 
List<String list = new ArrayList<String>(); 
for(int i=0; i < items.length; i++){ 
    list.add(items);  
} 

Można by ująć to „szeregowania” do swojej własna klasa owija listę, aby była przyjemna i uporządkowana. Możesz także spojrzeć na konwersję swojego list do JSON.

+2

Upewnij się, że OP zwraca większą uwagę, jeśli jego elementy listy zawierają przecinki. Preferuję metodę JSON najlepszą. To takie proste. – Samuel

+0

Gson jest najłatwiejszy: gson.toJson (OBJECT) jest zawsze tym, co robię. – Codeversed

-1

Jeśli chcesz zapisać/pobrać/usunąć pewną wartość ciągu w swoim programie, wówczas List jest lepsza niż Array. Tutaj poniżej pokażę ci, jak z niego korzystać.

// Declaring List Variable 
List<String> Mylist = new ArrayList<String>(); 

// Adding item to List 
Mylist.add(list.size(), "MyStringValue"); //this will add string at the next index 

// Removing element form list 
Mylist.remove(list.size()-1); //this will remove the top most element from List 
Powiązane problemy