Как сохранить целочисленный Arraylist в Shared Pref и получить его в Android / Java? - PullRequest
1 голос
/ 19 июня 2020

Я пробовал так много предложений: я узнал, что мы можем сохранить набор String в Shared pref, но у меня есть список целочисленных массивов. Теперь, если я попробую Integer Arralist в String Arraylist и сохраню в Shared Pref и снова сделаю то же самое, так что длительный процесс и много исключений.

Есть ли другой способ?

Убедитесь, что Я хочу использовать Shared Pref, ничего другого:

Код:

public Set<String> getAppointmentStatusPosList() {
        return sharedPreferences.getStringSet(APPOINTMENT_STATUS_ID_LIST, null);
    }

    public void setAppointmentStatusPosList(Set<String> vitalId) {
        editor.putStringSet(APPOINTMENT_STATUS_ID_LIST, vitalId);
        editor.apply();
    }

 @Override
    public void selectedIndices(List<Integer> indices) {
        Set<Integer> set = new HashSet<>();
        set.addAll(indices);
        preferenceManager.setAppointmentStatusPosList(set);
       // list1 = indices;
    }

Ответы [ 2 ]

1 голос
/ 19 июня 2020

Преобразовать массив целых чисел в строку

List<Integer> listInteger = new ArrayList();
listInteger.add(1);
listInteger.add(2);
listInteger.add(3);

// Convert Integer array to String text 
String ss = new Gson().toJson(listInteger);

Сохранить текст строки в SharedPreference

SharedPreferences prefs = context.getSharedPreferences("com.example.myapplication", Context.MODE_PRIVATE);
        prefs.edit().putString("APPOINTMENT_STATUS_ID_LIST_STRING", ss).apply();

Получить строку текст из SharedPreference

String text = prefs.getString("APPOINTMENT_STATUS_ID_LIST_STRING", "");

Преобразуйте текст строки в массив целых чисел

// Convert string text to Integer array 
final Type type = new TypeToken<List<? extends Integer>>() {
}.getType();

listInteger = new Gson().fromJson(ss, type);

Примечание: - Вы должны добавить ниже зависимость в свое приложение Gradle файл.

dependencies {
  implementation "com.squareup.retrofit2:converter-gson:2.3.0"
}
0 голосов
/ 19 июня 2020

Попробуйте это ...

    int[] list = new int[10];
    //below is test data, add your original data same like below
    for (int i = 0; i < list.length; i++) {
        list[i]=i;
    }

    StringBuilder str = new StringBuilder();
    for (int i = 0; i < list.length; i++) {
        str.append(list[i]).append(",");
    }

    SharedPreferences.Editor editor=preferences.edit();
    editor.putString("string",str.toString());
    editor.commit();



    String savedString = preferences.getString("string", "");
    java.util.StringTokenizer st = new StringTokenizer(savedString, ",");
    int[] savedList = new int[10];
    for (int i = 0; i < 10; i++) {
        savedList[i] = Integer.parseInt(st.nextToken());

        Log.d("====","savedList :  "+savedList[i]);
    }

ИЛИ Отметьте эту библиотеку, это способ сохранить любые общие настройки https://github.com/yehiahd/FastSave-Android

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...