Android save arraylist to sharedpreferences

How to Save ArrayList to SharedPreferences in Android?

SharedPreferences in Android is local storage that is used to store strings, integers, and variables in phone storage so that we can manage the state of the app. We have seen storing simple variables in shared prefs with key and value pair. In this article, we will see How we can store ArrayList to shared preferences in our Android app.

What we are going to build in this article?

We will be building a simple application in which we will be displaying course names with its description in a simple RecyclerView and we will be storing all this data in our shared preferences. So when we close our app and reopens our app all the data will be saved in shared preferences and the state of our recycler view is maintained. A sample video is given below to get an idea about what we are going to do in this article. Note that we are going to implement this project using the Java language.

Step by Step Implementation

Step 1: Create a New Project

To create a new project in Android Studio please refer to How to Create/Start a New Project in Android Studio. Note that select Java as the programming language.

Step 2: Adding dependency for gson in build.gradle

Navigate to the app > Gradle Scripts > build.gradle(app) and add the below dependency in the dependencies section.

After adding this dependency sync your project.

Step 3: Creating a modal class for storing our data

Navigate to the app > java > your app’s package name > Right-click on it > New > Java class and name your class as CourseModal and add the below code to it.

Источник

WrathChaos / SharedPreferenceUsage.md

This comment has been minimized.

Copy link Quote reply

Dencer commented May 30, 2018

This comment has been minimized.

Copy link Quote reply

nathan-mersha commented Jul 4, 2018

This comment has been minimized.

Copy link Quote reply

samirsamedow commented Oct 12, 2018 •

Thanks for the share. but how to delete saved list?. editor.remove(key) not worked

Читайте также:  Как найти рут права для андроид

This comment has been minimized.

Copy link Quote reply

pbwauyo commented Mar 2, 2019

Thanks for the share. but how to delete saved list?. editor.remove(key) not worked

This comment has been minimized.

Copy link Quote reply

amanaggarwal1 commented Jul 21, 2020

great work there

This comment has been minimized.

Copy link Quote reply

MadhavSapkota commented Aug 19, 2020

How to display that saved array in list view??

This comment has been minimized.

Copy link Quote reply

WrathChaos commented Aug 19, 2020

How to display that saved array in list view??

You need to google it for that 🙂 Not the right place to ask 🙂

This comment has been minimized.

Copy link Quote reply

oremlawi commented Oct 26, 2020

How to work with ArrayList ?

Note that CustomClass has Date, Int and String fields

This comment has been minimized.

Copy link Quote reply

WrathChaos commented Oct 26, 2020

Hey @oremlawi,
I really could not understand your question. Can you explain it a bit?

This comment has been minimized.

Copy link Quote reply

deva-25 commented Apr 23, 2021

Am using it on a fragment page. But the data is not loading back.

This comment has been minimized.

Copy link Quote reply

thanhdat410 commented Jul 11, 2021

Phenomenal !! U saved me

This comment has been minimized.

Copy link Quote reply

WrathChaos commented Jul 13, 2021

I suggest you to write a simple util class to use them a much better way.

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

Источник

Сохранить ArrayList в SharedPreferences

У меня есть ArrayList с пользовательскими объектами. Каждый пользовательский объект содержит различные строки и числа. Мне нужно, чтобы массив оставался без присмотра, даже если пользователь покидает действие и затем хочет вернуться позже, однако мне не нужен массив, доступный после того, как приложение было полностью закрыто. Таким способом я сохраняю множество других объектов, SharedPreferences но не могу понять, как сохранить весь массив таким образом. Это возможно? Может быть SharedPreferences , не так ли? Есть ли более простой способ?

После API 11 SharedPreferences Editor принять Sets . Вы можете преобразовать свой Список в HashSet или что-то подобное и сохранить его таким образом. Когда вы прочитаете его обратно, преобразуйте его в ArrayList , сортируйте, если нужно, и все готово.

Вы также можете сериализовать свой ArrayList и затем сохранить / прочитать его в / из SharedPreferences . Ниже приведено решение:

РЕДАКТИРОВАТЬ:
Хорошо, ниже приведено решение для сохранения в ArrayList виде сериализованного объекта SharedPreferences и последующего чтения его из SharedPreferences.

Поскольку API поддерживает только сохранение и извлечение строк в / из SharedPreferences (после API 11, это проще), мы должны сериализовать и десериализовать объект ArrayList, который имеет список задач в строку.

В addTask() методе класса TaskManagerApplication мы должны получить экземпляр общего предпочтения и затем сохранить сериализованный ArrayList, используя putString() метод:

Точно так же мы должны получить список задач из предпочтения в onCreate() методе:

Источник

Сохранить ArrayList в SharedPreferences

У меня есть ArrayList с пользовательскими объектами. Каждый пользовательский объект содержит множество строк и чисел. Мне нужен массив, чтобы придерживаться, даже если пользователь покидает активность, а затем хочет вернуться позже, однако мне не нужен массив, доступный после того, как приложение было полностью закрыто. Я сохраняю много других объектов таким образом, используя SharedPreferences , но я не могу понять, как сохранить весь этот массив. Это возможно? Может быть, SharedPreferences — это не способ сделать это? Есть ли более простой метод?

Читайте также:  Нет настроек apn андроид

ОТВЕТЫ

Ответ 1

После API 11 SharedPreferences Editor принять Sets . Вы можете преобразовать свой список в HashSet или что-то подобное и сохранить его таким образом. Когда вы его прочитаете, преобразуйте его в ArrayList , при необходимости отсортируйте, и вам будет хорошо.

Вы также можете сериализовать свой ArrayList , а затем сохранить/прочитать его в/из SharedPreferences . Ниже приведено решение:

EDIT:
Итак, ниже находится решение сохранить ArrayList как сериализованный объект до SharedPreferences , а затем прочитать его из SharedPreferences.

Поскольку API поддерживает только сохранение и извлечение строк в/из SharedPreferences (после более простого API-интерфейса API 11), мы должны сериализовать и де-сериализовать объект ArrayList, который имеет список задач в строку.

В методе addTask() класса TaskManagerApplication мы должны получить экземпляр общей настройки и затем сохранить сериализованный ArrayList с помощью метода putString() :

Аналогичным образом мы должны получить список задач из предпочтения в методе onCreate() :

Вы можете получить класс ObjectSerializer из проекта Apache Pig ObjectSerializer.java

Ответ 2

ОБНОВИТЬ

Некоторые полезные примеры и устранение неполадок могут быть найдены здесь: Android Shared Preference TinyDB putListObject frunction

Ответ 3

Сохранение Array в SharedPreferences :

Загрузка данных Array из SharedPreferences

Ответ 4

Вы можете преобразовать его в JSON String и сохранить строку в SharedPreferences .

Ответ 5

Как сказал @nirav, лучшим решением является сохранение его в sharedPrefernces в виде текста json с использованием класса утилиты Gson. Ниже пример кода:

Ответ 6

Привет, друзья. Я получил решение выше проблемы без использования библиотеки Gson . Здесь я отправляю исходный код.

1.Варифное объявление i.e

2. Переменная инициализация iee

Значение 3.Store для sharedPreference с помощью packagesharedPreferences() :

4.Retrive значение sharedPreference с помощью retriveSharedValue() :

Надеюсь, это поможет вам.

Ответ 7

Android SharedPreferances позволяет сохранять примитивные типы (Boolean, Float, Int, Long, String и StringSet, которые доступны с API11) в виде XML файла.

Ключевой идеей любого решения было бы преобразование данных в один из этих примитивных типов.

Мне лично нравится преобразовывать свой список в формат json, а затем сохранять его как строку в значении SharedPreferences.

Чтобы использовать мое решение, вам нужно будет добавить Google Gson lib.

В gradle просто добавьте следующую зависимость (пожалуйста, используйте последнюю версию Google):

Сохранить данные (где HttpParam — ваш объект):

Получить данные (где HttpParam — ваш объект):

Ответ 8

Вы также можете преобразовать arraylist в String и сохранить это в предпочтении

Вы можете сохранить Arraylist после преобразования его в строку с convertToString метода convertToString и получить строку и преобразовать ее в массив с помощью convertToArray

После API 11 вы можете сохранить набор непосредственно в SharedPreferences, хотя . 🙂

Ответ 9

Это ваше идеальное решение. Попробуйте,

Ответ 10

Я прочитал все ответы выше. Это все правильно, но я нашел более легкое решение, как показано ниже:

Сохранение списка строк в общих предпочтениях >>

и для получения списка строк из общего предпочтения >>

Здесь Constants.APP_PREFS — это имя открытого файла; не может содержать разделители путей.

Ответ 11

Ответ 12

лучшим способом является преобразование в строку JSOn с использованием GSON и сохранение этой строки в SharedPreference. Я также использую этот способ для кэширования ответов.

Ответ 13

Вы можете ссылаться на функции serializeKey() и deserializeKey() из класса SharedPreferencesTokenCache от FacebookSDK. Он преобразует поддерживаемый тип в объект JSON и сохраняет строку JSON в SharedPreferences. Вы можете скачать SDK из здесь

Ответ 14

Почему бы вам не наклеить свой arraylist на класс приложения? Он только уничтожается, когда приложение действительно убито, поэтому он будет придерживаться до тех пор, пока приложение доступно.

Читайте также:  Аврора стор для андроида

Ответ 15

Лучшим способом, который я смог найти, является создание двумерного массива ключей и размещение пользовательских элементов массива в 2-мерном массиве ключей, а затем извлечение его через 2D-arra при запуске. Мне не понравилась идея использовать набор строк, потому что большинство пользователей андроида все еще на Gingerbread, а для использования набора строк требуется сота.

Пример кода: здесь ditor — это общий редактор pref, а rowitem — мой пользовательский объект.

Ответ 16

следующий код — это принятый ответ, а еще несколько строк для новых людей (меня), например. показывает, как преобразовать объект типа set обратно в arrayList и дополнительные указания относительно того, что происходит до ‘.putStringSet’ и ‘.getStringSet’. (спасибо, безнадежно)

Ответ 17

Ответ 18

не забудьте реализовать Serializable:

Ответ 19

Вы можете использовать сериализацию или библиотеку Gson для преобразования списка в строку и наоборот, а затем сохранить строку в настройках.

Использование библиотеки Google Gson:

Использование сериализации Java:

Ответ 20

Вы можете сохранить список String и custom array, используя библиотеку Gson.

=> Сначала вам нужно создать функцию для сохранения списка массивов в SharedPreferences.

=> Вам нужно создать функцию для получения списка массивов из SharedPreferences.

=> Как вызвать функцию сохранения и извлечения списка массивов.

=> Не забывайте добавлять gson-библиотеку в ваш уровень приложения build.gradle.

реализация ‘com.google.code.gson: gson: 2.8.2’

Ответ 21

Также с Котлином:

Ответ 22

Этот метод используется для хранения/сохранения списка массивов:

Этот метод используется для извлечения списка массивов:

Ответ 23

Вы можете преобразовать его в объект Map для его сохранения, а затем вернуть значения обратно в ArrayList при извлечении SharedPreferences .

Ответ 24

Используйте этот настраиваемый класс:

Ответ 25

Я использовал тот же способ сохранения и извлечения строки, но здесь с arrayList я использовал HashSet в качестве посредника

Чтобы сохранить arrayList в SharedPreferences, мы используем HashSet:

1- мы создаем переменную SharedPreferences (там, где изменение происходит с массивом)

2 — конвертируем arrayList в HashSet

3 — тогда мы ставим строку Set и применяем

4 — вы получаете StStringSet внутри HashSet и воссоздаете ArrayList для установки HashSet.

Ответ 26

Мой класс utils для списка сохранения в SharedPreferences

Полный код моего utils//проверить пример в Activity Code

Ответ 27

Ответ 28

Все приведенные выше ответы верны.:) Я сам использовал один из них для своей ситуации. Однако, когда я прочитал вопрос, я обнаружил, что OP фактически говорит о другом сценарии, чем название этого сообщения, если я не ошибаюсь.

«Мне нужен массив, чтобы придерживаться, даже если пользователь покидает активность, а затем хочет вернуться позже»

Он действительно хочет, чтобы данные хранились до открытия приложения, независимо от изменения пользователем экрана в приложении.

«однако мне не нужен массив, доступный после того, как приложение было полностью закрыто»

Но как только приложение закрыто, данные не должны быть сохранены. Мне кажется, что использование SharedPreferences не является оптимальным для этого.

Для этого можно создать класс, который расширяет класс Application .

Используя setter и getter, доступ к ArrayList можно получить из любого места в приложении. И самое главное, когда приложение закрыто, нам не нужно беспокоиться о хранящихся данных.:)

Ответ 29

Это очень просто, используя getStringSet и putStringSet в SharedPreferences, но в моем случае я должен дублировать объект Set, прежде чем я могу добавить все, что угодно. Или же, Set не будет сохранен, если мое приложение будет принудительно закрыто. Вероятно, из-за приведенной ниже информации в API ниже. (Он сохраняется, если приложение закрыто кнопкой «Назад» ).

Источник

Оцените статью