2011-09-09 40 views
12

我正在從事android。我想在我的代碼中創建共享首選項,但是我不知道我可以如何爲數組創建共享首選項,以及如何在另一個類中使用該共享首選項的值。如何編寫代碼來爲Android中的數組創建共享首選項?

這是我的數組中的一個循環: - urls [i] = sitesList.getWebsite()。get(i);

我想使這個urls []數組的共享首選項。請告訴我如何編寫代碼來聲明sharedpreference以及如何檢索該sharedpreference的值?

預先感謝您。

回答

50

putStringSetgetStringSet僅在API可用11

另外,您可以使用序列化JSON像這樣的數組:

public static void setStringArrayPref(Context context, String key, ArrayList<String> values) { 
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 
    SharedPreferences.Editor editor = prefs.edit(); 
    JSONArray a = new JSONArray(); 
    for (int i = 0; i < values.size(); i++) { 
     a.put(values.get(i)); 
    } 
    if (!values.isEmpty()) { 
     editor.putString(key, a.toString()); 
    } else { 
     editor.putString(key, null); 
    } 
    editor.commit(); 
} 

public static ArrayList<String> getStringArrayPref(Context context, String key) { 
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 
    String json = prefs.getString(key, null); 
    ArrayList<String> urls = new ArrayList<String>(); 
    if (json != null) { 
     try { 
      JSONArray a = new JSONArray(json); 
      for (int i = 0; i < a.length(); i++) { 
       String url = a.optString(i); 
       urls.add(url); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
    return urls; 
} 

設置和retreive您的網址,像這樣:

// store preference 
ArrayList<String> list = new ArrayList<String>(Arrays.asList(urls)); 
setStringArrayPref(this, "urls", list); 

// retrieve preference 
list = getStringArrayPref(this, "urls"); 
urls = (String[]) list.toArray(); 
+0

它正在爲我工​​作..其實我想要這種類型的解決方案.. Thankx @Jeff Gilfelf –