13

I am working in android. I want to make sharedpreference in my code, but i dont know the way by which i can make a sharedpreference for array and how can use the value of that sharedpreference in another class.

This is my array in one for loop :- urls[i]=sitesList.getWebsite().get(i);

i want to make share preference of this urls[] array. please suggest me how can i write code to declare sharedpreference and how can i retrieve value of that sharedpreference ?

Thank you in advance.

1 Answer 1

58

putStringSet and getStringSet are only available in API 11.

Alternatively you could serialize your arrays using JSON like so:

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

Set and retreive your URLs like so:

// 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();
Sign up to request clarification or add additional context in comments.

1 Comment

It is working for me.. Actually I want Exactly this type of Solution.. Thankx @Jeff Gilfelf

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.