Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110
#1

Сохранение arraylist<class> в памяти устройства - Программирование Android

22.09.2013, 15:46. Просмотров 1295. Ответов 20
Метки нет (Все метки)

Добрый день! Подскажите, как привильно сохрянать список с классами? Как я понимаю надо смотреть в сторону SQLite? Допустим класс книга, который имеет имя, описание и номер. Как я понимаю можно создать базу данных в приложении. Но что если класс содержит в себе еще список классов, который так же содежит еще один список. Не получится ли слишком награможденно и скажется ли это на производительности? Заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2013, 15:46     Сохранение arraylist<class> в памяти устройства
Посмотрите здесь:

Как поместить в preferences arrayList типа: arraylist<Class> - Программирование Android
Как поместить в preferences arrayList типа: arraylist&lt;Class&gt; Class содержит вид: public class CountryClass { private String...

Сохранение ArrayList в файл и его чтение - Программирование Android
Привет! Имеется: List&lt;File&gt; mImg = new ArrayList&lt;&gt;(); File dir = new...

Как программно обратиться к внутренней памяти устройства - Программирование Android
Здравствуйте, подскажите пожалуйста, имеется планшет Samsung Galaxy Tab 4 с ОС Android 5.0.2. Подключаю планшет через usb к ПК с Windows 7,...

Java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation - Программирование Android
Здравствуйте. При динамической загрузке кода столкнулся с такой ошибкой: E/AndroidRuntime(27808): Caused by:...

ArrayList - Программирование Android
Доброго времени суток! Мне нужно сделать случайную выборку чисел из массива и чтобы в последующим запросе небыло повторений. Так вот...

ArrayList - Программирование Android
Здравствуйте. Сразу вопрос. У меня есть ArrayList заполнен данными. Вот структура: 1 Физика,Математика,Химия Мороз Т.Ю.,Клюк...

Работа с ArrayList - Программирование Android
Добрый день! Второй день бьюсь над проблемой. Из ArrayList при помощи метода get все элементы выдаются одинаковые, равные последнему...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
22.09.2013, 15:57     Сохранение arraylist<class> в памяти устройства #2
Можно хранить не список объектов класса, а некий id.
Например, класс книга имеет поля id автора, название, описание и номер. А в базе данных есть таблица с авторами и таблица с книгами, и что бы узнать кто автор достаточно взять поле id автора из объекта Книга и сделать запрос в БД.
Тут может помочь готовое решение, например:
https://bitbucket.org/qbusict/cupboard
Там есть примеры, как раз с автором и книгами.
haribo
41 / 41 / 3
Регистрация: 26.05.2013
Сообщений: 160
23.09.2013, 09:51     Сохранение arraylist<class> в памяти устройства #3
1. в поле "список библиотек" у объекта "книга" храните json со всеми данными библиотек.
2. создайте таблицу с колонками "id name description number bibles" и напихайте туда столько записей для одной книги, сколько библиотек у нее может быть.
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110
23.09.2013, 12:57  [ТС]     Сохранение arraylist<class> в памяти устройства #4
haribo
Не могли бы вы привести пример, по сохранению arrayList<Топик>?
И почему json? с ним будет работать быстрее?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Топик {
 String name;
 String link;
 ArrayList<Тема> themeList;
 }
public class Тема {
 String name;
 String link;
 ArrayList<Ответ> reactionList;
 }
public class Ответ {
 String discretion;
 String userName;
 }
haribo
41 / 41 / 3
Регистрация: 26.05.2013
Сообщений: 160
23.09.2013, 13:12     Сохранение arraylist<class> в памяти устройства #5
Таблицы:

Answer:
id discription username
1 описание1 user1
2 описание2 user2
3 описание3 user3
4 описание4 user4

Theme:
id name link reaction
1 имятемы1 линк1 1
1 имятемы1 линк1 2
1 имятемы1 линк1 3
1 имятемы1 линк1 4

Получается у Темы1 - список реакций (1,2,3,4)

Это как вариант, SQL структурированный и правильный, но не самый лучший и быстрый.
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110
23.09.2013, 13:56  [ТС]     Сохранение arraylist<class> в памяти устройства #6
Как будет выглядить весь список тем? Надо под каждую тему создавать отдельный файл или все писать в один? Но если список тем перевалит за 1000 тем. Куда сохранять этот файл?
haribo
41 / 41 / 3
Регистрация: 26.05.2013
Сообщений: 160
23.09.2013, 14:50     Сохранение arraylist<class> в памяти устройства #7
Какой файл? О чем вы?
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110
23.09.2013, 15:54  [ТС]     Сохранение arraylist<class> в памяти устройства #8
С json дела я не имел особо, но пару раз попадался мне на глаза.
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
   "firstName": "Иван",
   "lastName": "Иванов",
   "address": {
       "streetAddress": "Московское ш., 101, кв.101",
       "city": "Ленинград",
       "postalCode": 101101
   },
   "phoneNumbers": [
       "812 123-1234",
       "916 123-4567"
   ]
}
Куда тогда его записывать? Видимо, я вас совсем не так понял
haribo
41 / 41 / 3
Регистрация: 26.05.2013
Сообщений: 160
23.09.2013, 15:56     Сохранение arraylist<class> в памяти устройства #9
Вы можете пойти сложным путем записывая json в поле типа text в SQLite БД.
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110
23.09.2013, 16:00  [ТС]     Сохранение arraylist<class> в памяти устройства #10
никак не могу уловить вашу мысль...Что мне делать тогда? Можете написать поэтапно, если не затруднит.
haribo
41 / 41 / 3
Регистрация: 26.05.2013
Сообщений: 160
23.09.2013, 16:21     Сохранение arraylist<class> в памяти устройства #11
Уговорили, даю пример :-)
Не надо json.

У одного топика может быть много тем.
В java это так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
class Topic {
    private Integer id;
    private String name;
    private List<Theme> themes;
 
    //getters and setters
}
class Theme {
    private Integer id;
    private String name;
 
    //getters and setters
}
А в SQL это так:
1. Создаете в БД SQLite две таблицы, Theme и Topic.
SQL
1
2
3
4
5
Topic:
id    name
 
Theme 
id     name    topicid
2. Таблица Topic: id - уникальный, автогенерируемый идентификатор топика, name - имя топика.
3. Таблица Theme : id - уникальный, автогенерируемый идентификатор темы, name - имя темы, topicid - ссылка на id в таблицу Topic.

Таким образом таблицы будут иметь следующий вид:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
Topic:
id    name
1     имя1
2     имя2
3     имя3
Theme 
id     name        topicid
1      имятемы1  1
2      имятемы2  1
3      имятемы3  1
4      имятемы4  2
5      имятемы5  2
То есть, у топика с id = 1 есть три темы с id = {1,2,3) а у топика с id = 2 есть две темы с id = {4,5}.
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110
23.09.2013, 16:31  [ТС]     Сохранение arraylist<class> в памяти устройства #12
Спасибо!
Теперь понятно, вы имеете ввиду использование SQLite.
Еще вопрос, по базам. Если у меня есть уже существующая тема, и я хочу добавить сразу 10 топиков, какой метод мне использовать?
Занать в цикл метод db.insert? или есть другие решения?
Как можно узнать id добавленной записи? допустим если сразу создать топик и тему, то в тему нужно передать id топика
haribo
41 / 41 / 3
Регистрация: 26.05.2013
Сообщений: 160
23.09.2013, 16:51     Сохранение arraylist<class> в памяти устройства #13
1. да в цикле
2.
Java
1
long id = db.insert(...);
метод insert() возвращает id вставленной записи
suvorov
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 110
23.09.2013, 17:03  [ТС]     Сохранение arraylist<class> в памяти устройства #14
Удобно!
И последний вопрос.
Объявляю в таблице name unique. Если в таблицу пытаются внести 2 одиноковых имя, произойдет exaption, как я понимаю. Как правильно отловить, была запись в таблицу или нет?

Пока знаю только такой способ, но не уверен, правильный ли он:

try
{
db.insert(...);
return true;
}
catch
{
return false;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2013, 18:36     Сохранение arraylist<class> в памяти устройства
Еще ссылки по теме:

ArrayList contains object - Программирование Android
Мое приложение добавляет избранные игры в список. Мне нужно выводить сообщения о том, что список содержит определенные приложения, как это...

Android arrayList - Программирование Android
У меня есть два активити, в одном получаю значения и записываю их в ArrayList, а в другом мне их нужно печатать на экран. Как можно это...

Фильтрация ArrayList - Программирование Android
Здравствуйте. Пишу приложение содержащее ArrayList. У пользователя есть возможность фильтровать этот список. Вот фильтрация у меня и не...

Сортировка в ArrayList - Программирование Android
У меня есть ArrayList со сногими данными. Нужно отсортировать по TicketPrice и в другом Фрагменте показать. Но я в первый раз с таким...

Работа с ArrayList - Программирование Android
Здравствуйте, в университете задали такую задачку, и её нужно реализовать в Андроид: Создать программу реализующую каталог автомобилей....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
haribo
41 / 41 / 3
Регистрация: 26.05.2013
Сообщений: 160
23.09.2013, 18:36     Сохранение arraylist<class> в памяти устройства #15
правильный
Yandex
Объявления
23.09.2013, 18:36     Сохранение arraylist<class> в памяти устройства
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru