Array in SharedPreferences speichern und ListView zuweisen

  • Antworten:2
Klaus Müller
  • Forum-Beiträge: 2

04.04.2014, 18:30:31 via Website

Wie kann ich einen String Array in einem SharedPreferences speichern, ihn dann auslesen und schließlich zu einem ListView hinzufügen?

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

04.04.2014, 20:13:05 via Website

Schreib es einfach so weg: A,B,C,D

Vorgefertigte Methoden gibt es nicht dafür. Wenn deine Strings unique sind kannst du auch putStringSet benutzen.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Aaron B.
  • Forum-Beiträge: 206

05.04.2014, 21:52:07 via App

So ähnlich? :)

1public class SharedManager
2 {
3
4 private static final String DIVIDER = ";";
5
6 public static void putArrayToShared(String shared, String name, String[] array, Context c)
7 {
8 c.getSharedPreferences(shared, Context.MODE_PRIVATE).edit().putString(name, s(array)).apply();
9 }
10
11 public static String s(String[] src)
12 {
13 //convert array to string
14 String result = "";
15
16 for(String part : src)
17 result += DIVIDER + part;
18
19 //if empty
20 if(result.length() == 0)
21 return result;
22
23 //else
24
25 //remove ';' at first position
26 result = result.substring(1);
27
28 return result;
29 }
30
31 public static String[] getArrayFromShared(String shared, String name, Context c)
32 {
33 String result = c.getSharedPreferences(shared, Context.MODE_PRIVATE).getString(name, null);
34
35 return a(result);
36 }
37
38 public static String[] a(String src)
39 {
40 //if empty
41 if(src == null || src.length() == 0)
42 return null;
43
44 //if only one item
45 if(!src.contains(DIVIDER))
46 return new String[] {src};
47
48 //else
49 return src.split(DIVIDER);
50 }
51
52 }

Wenn in deinem Array ';' vorkommen kann, solltest du als DIVIDER etwas anderes nehmen... Du kannst auch z. B. '273-'%-$82*$' o. Ä. nehmen...

Hoffe, ich konnte helfen :)
Lg

— geändert am 05.04.2014, 21:53:08

Antworten