Как сохранить список объектов в приложении для Android?

Каков наиболее эффективный способ хранения списка объектов констант в приложении для Android? Я хочу предоставить объекты в json / database, показать список объектов и поместить один из них в два действия: одно со списком, второе с динамическими фрагментами. Анализировать на первом обеде приложения из json в SharedPreference - хорошая идея или лучший способ - каждый раз получать список всех объектов из локальной базы данных?

Это зависит от того, что вы хотите делать с этими объектами, и являются ли они статичными или изменяющимися.

Jacek Kuliś 27.10.2018 13:32

Я хочу использовать его только для отображения определенного фрагмента объекта. Объект и список будут статичными.

luk-perski 27.10.2018 13:36

Эти данные будут структурированы одинаково? И скажите мне, будут ли эти объекты сложными или простыми. Если данные будут сложными, я бы предложил использовать базу данных (например, SQLite), если данные будут иметь простую структуру (без ссылок), используйте SharedPreferences, потому что чтение происходит быстрее.

Jacek Kuliś 29.10.2018 18:13
1
3
453
3

Ответы 3

на основе ваших данных оба решения хороши, вы можете использовать SharedPreference или SQLite DataBase в своем приложении, но если ваши данные не такие сложные или такие большие, я предлагаю вам использовать SharedPreference и библиотеку Google Gson для преобразования ArrayList в String и сохранить результат в SharedPreference и конвертировать сохраненные данные в ArrayLists (я сохраняю свои данные во всех своих проектах, и он работает так хорошо), работать с SQLite сложнее, чем с SharedPreference, но у него есть некоторые преимущества при работе с большими или сложными данными.

Но как предоставить данные в приложение? Список должен содержать 55 небольших объектов с шестью полями.

luk-perski 27.10.2018 14:01

вы хотите, чтобы эти данные были в вашем приложении, когда пользователь установил приложение?

Morteza 27.10.2018 15:03

Да, точно. Я хочу предоставить эти данные офлайн, внутри .apk.

luk-perski 28.10.2018 08:14

для этого вы можете сохранить данные в виде строки в текстовом файле в папке с ресурсами, а после открытия приложения от пользователя вы можете прочитать этот файл как строковый файл, преобразовать его в json с библиотекой Gson и сохранить их в SharedPreference.

Morteza 28.10.2018 10:16

Если данные не слишком сложные и не слишком много объектов, вы также помещаете их в статический класс.

public class Data {

    public static List<Data> DATA = new ArrayList<>() {{
        add(new Data("Foo", 42, 3.1415)),
        add(new Data("Bar", 123, 2.718))
    }};

    public String string;
    public int i;
    public double d;

    public Data(String string, int i, double d) {
        this.string = string;
        this.i = i;
        this.d = d;
    }
}

и используйте это так:

...
for(Data d : Data.DATA) {
    System.out.println(d.string);
}

55 объектов с шестью полями. Я не знаю, использовать ли для них статический класс, если хорошо, подумайте о написании чистого и хорошего кода.

luk-perski 27.10.2018 14:04

Вы можете использовать базу данных sqlite и использовать Комната. Он довольно аккуратный, имеет хорошую читаемость и не займет много времени, чтобы внедрить его в ваш проект. Некоторые могут возразить, что с точки зрения передовой практики было бы более уместным поместить данные, которые вы описываете, в локальную базу данных вместо использования общих предпочтений.

Другие вопросы по теме