- How to Save ArrayList to SharedPreferences in Android?
- What we are going to build in this article?
- Step by Step Implementation
- Как сохранить пользовательский ArrayList на экране Android?
- 3 ответов
- Сохранить ArrayList в SharedPreferences
- 30 ответов
- Сохранить arraylist android studio
- Как сохранить ArrayList в файл?
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.
Источник
Как сохранить пользовательский ArrayList на экране Android?
у меня есть ArrayList с пользовательскими объектами, которые я хотел бы иметь возможность сохранять и восстанавливать на экране поворота.
Я знаю, что это можно сделать с onSaveInstanceState и onRestoreInstanceState если бы я должен был сделать ArrayList свой собственный класс, который реализует либо Parcelable или Serializable . Но есть ли способ сделать это без создания другого класса?
3 ответов
вам не нужно создавать новый класс для передачи ArrayList ваших пользовательских объектов. Вы должны просто реализовать класс Parcelable для своего объекта и использовать Bundle#putParcelableArrayList () на onSaveInstanceState() и onRestoreInstanceState() . Этот метод будет хранить ArrayList Parcelables сам по себе.
поскольку тема Parcelables (и Сериализуемых и Пучков) иногда заставляет мою голову болеть, вот основной пример ArrayList, содержащий пользовательский Parcelable объекты, хранящиеся в связке. (Это вырезать и вставить runnable, не макет необходимо.)
Реализует Parcelable
Сохранить / Восстановить Штаты
можно использовать onRetainNonConfigurationInstance() . Он позволяет сохранить любой объект до изменения конфигурации и восстановить его после с помощью getLastNonConfigurationInstanceState ().
Да, вы можете сохранить составной объект в общих настройках. Скажем:
и теперь вы можете получить свой объект как:
Источник
Сохранить ArrayList в SharedPreferences
у меня есть ArrayList с пользовательскими объектами. Каждый пользовательский объект содержит множество строк и чисел. Мне нужен массив, чтобы придерживаться, даже если пользователь покидает действие, а затем хочет вернуться позже, однако мне не нужен массив, доступный после того, как приложение было полностью закрыто. Я сохраняю много других объектов таким образом, используя SharedPreferences но я не могу понять, как сохранить весь мой массив таким образом. Возможно ли это? Может быть!—1—> это не путь об этом? Есть ли более простой метод?
30 ответов
после API 11 SharedPreferences Editor принимать Sets . Вы можете преобразовать свой список в HashSet или что-то подобное и хранить его так. Когда вы прочитаете его обратно, преобразуйте его в ArrayList , а если необходимо и вы хорошо идти.
вы также можете сериализовать свой ArrayList а затем сохранить / прочитать его в / из SharedPreferences . Ниже приведено решение:
EDIT:
Хорошо, Ниже приведено решение для сохранения ArrayList как сериализованный объект SharedPreferences а затем прочитайте его из SharedPreferences.
поскольку API поддерживает только хранение и извлечение строк в / из SharedPreferences (после API 11, его проще), мы должны сериализовать и де-сериализовать объект ArrayList, который имеет список задач в строку.
на addTask() метод класса TaskManagerApplication, мы должны получить экземпляр общего предпочтения, а затем сохранить сериализованный ArrayList с помощью putString() метод:
аналогично мы должны получить список задач из предпочтения в onCreate() способ:
Источник
Сохранить arraylist android studio
//сохранение и чтение массива ArrayList
//сохранение и чтение Map (скопипастил,не использовал пока)
//***********************************************************************************************
public static void saveMap(Context context, String key,Map inputMap) <
SharedPreferences pSharedPref = PreferenceManager.getDefaultSharedPreferences(context);
if (pSharedPref != null) <
JSONObject jsonObject = new JSONObject(inputMap);
String jsonString = jsonObject.toString();
SharedPreferences.Editor editor = pSharedPref.edit();
editor.remove(key).commit();
editor.putString(key, jsonString);
editor.commit();
>
>
public static Map loadMap(Context context, String k) <
Map outputMap = new HashMap ();
SharedPreferences pSharedPref = PreferenceManager.getDefaultSharedPreferences(context);
try <
if (pSharedPref != null) <
String jsonString = pSharedPref.getString(k, (new JSONObject()).toString());
JSONObject jsonObject = new JSONObject(jsonString);
Iterator keysItr = jsonObject.keys();
while(keysItr.hasNext()) <
String key = keysItr.next();
String value = (String ) jsonObject.get(key);
outputMap.put(key, value);
>
>
>catch(Exception e) <
e.printStackTrace();
>
return outputMap;
>
//***********************************************************************************************
public SharedPreferences mSettings; // сохранялка
public final String APP_PREFERENCES = «mysettings»; // файл сохранялки
Источник
Как сохранить ArrayList в файл?
Как сохранить ArrayList в файл? Что я делаю не так?
Я использовал этот вопрос SO, чтобы помочь мне с объектами Serializable.:
и я использовал этот вопрос SO о том, как написать список массивов:
Однако, когда я пытаюсь записать файл в файл, я получаю сообщение об ошибке:
Здесь MyClass пытается сохранить файл
Вот MyCustomObject
Заменить этот метод
в вашем классе MyCustomObject, и ваш код должен работать нормально. Используйте что-то вроде
Поскольку способ, которым вы называете свой метод, противоречит конструктору по умолчанию, который java создает для класса MyCustomObject, когда вы не предоставляете конструктор самостоятельно. Я предполагаю, что вы используете этот метод, чтобы добавить экземпляр MyCustomObject в список массивов: вам действительно не нужен такой метод, но с правильным названием, которое вы все еще можете использовать.
Вы также должны поместить образцы данных в свой ArrayList, прежде чем сохранять их на диск, вызвав метод saveData().
Вот иллюстрация из вашего кода, который работает. Я не уверен, что ваш объект Context точно, но вы используете его, чтобы получить доступ к пути к файлу, поэтому, чтобы все было в порядке, я просто использовал конкретный путь к файлу.
Как вы можете видеть в коде, первый запуск основного метода сохранит файл на диске с помощью массива, заполненного одним объектом. Второй запуск читается из файла, а затем я печатал количество элементов и информацию, которую я сохранил до: изображение иллюстрирует результат
Источник