Как можно написать код, чтобы сделать общие предпочтения для массива в Android? - PullRequest
12 голосов
/ 09 сентября 2011

Я работаю в Android . Я хочу сделать sharedpreference в моем коде, но я не знаю, каким образом я могу сделать sharedpreference для массива и как использовать значение этого sharedpreference в другом классе.

Это мой массив в цикле for: - urls [i] = sitesList.getWebsite (). Get (i);

Я хочу сделать общий доступ к этому массиву urls []. Пожалуйста, предложите мне, как я могу написать код, чтобы объявить sharedpreference и как я могу получить значение этого sharedpreference?

Заранее спасибо.

1 Ответ

54 голосов
/ 09 сентября 2011

putStringSet и getStringSet доступны только в 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;
}

Установите и получите свои URL-адреса примерно так:

// 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...