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

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

Войти
Регистрация
Восстановить пароль
 
Mazilo
36 / 36 / 44
Регистрация: 31.10.2014
Сообщений: 206
#1

RecyclerView и SQLite - Android

01.11.2016, 19:30. Просмотров 541. Ответов 12
Метки нет (Все метки)

Нужно наполнить Recycler View данными из базы данных. Единственное решение, которое я нашел в сети, это достать данные из базы, перекинуть их в список, а затем уже этот список передать в кастомный адаптер, который связанный с Recycler View.
Но получается, если буду удалять какой-то элемент из списка на экране, то он удалится только из списка, который я передал при создании адаптера, а в базе элемент так и останется. Может можно как-то по другому это реализовать?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vindigo
18 / 18 / 3
Регистрация: 15.05.2014
Сообщений: 78
01.11.2016, 19:38     RecyclerView и SQLite #2
А что вам мешает отправить SQL-запрос на удаление записи вместе с удалением из списка?
Mazilo
36 / 36 / 44
Регистрация: 31.10.2014
Сообщений: 206
01.11.2016, 20:27  [ТС]     RecyclerView и SQLite #3
vindigo, меня интересует, на сколько это правильно с точки зрения архитектуры, может нужно как-то по другому
xaat
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
01.11.2016, 21:02     RecyclerView и SQLite #4
Цитата Сообщение от Mazilo Посмотреть сообщение
vindigo, меня интересует, на сколько это правильно с точки зрения архитектуры, может нужно как-то по другому
Получаешь курсор из БД, его передаешь в адаптер, если что то удалить нужно, делаешь запрос к БД на удаление, обновляешь, adapter.notifyDataSetChanged()
Примерно так
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
01.11.2016, 21:28     RecyclerView и SQLite #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от xaat Посмотреть сообщение
adapter.notifyDataSetChanged()
Маленькое замечание. Из всего мизера преимуществ RV перед ListView (а кое-где и откровенных провалов) можно выделить гибкое обновление списка. Этого в LV не хватает. В частности, notifyOnItemRemoved (или как-то так) будет работать быстрее, чем упомянутый выше, задержка при обновлении будет не так ощутима.
shavuz
99 / 105 / 19
Регистрация: 29.01.2014
Сообщений: 527
02.11.2016, 12:09     RecyclerView и SQLite #6
со стороны архитектуры должно быть так:
1) должен быть класс менеджер, отвечающий только за обращение и прием данных с сервера, обычно его делают синглтоном для того чтоб он жил на протяжении жизни аппликации и к нему можно было обратиться с любого места
2)адаптер ресайклера это элемент ЮАЙ, он не долен делать ничего кроме как показывать ЮАЙ, то есть через его констрактор нужно передавать уже готовый лист который заранее был получен через менеджер(пункт 1) с сервера.
3) так же должен быть интерфейс, который тоже передается через констрактор в адаптер, когда нужно удалить обьект, адаптер делает три вещи 1) удаляет обьект из листа 2) нотифайдатасетченджд 3) через колбек (интерфейс, который передали через констрактор) сообщает классу который создал адаптер что нужно удалить определенный обьект. В тот момент когда создающий адаптер класс узнает о том что из адаптера пришел сигнал удалить обьект, он сообщает об этом менеджеру(пункт 1) и менеджер посылает запрос на удаление из базы данных
Mazilo
36 / 36 / 44
Регистрация: 31.10.2014
Сообщений: 206
06.11.2016, 16:43  [ТС]     RecyclerView и SQLite #7
shavuz, не хочу дублировать темы, поэтому спрошу здесь.

Можно как-то один recycler view разделить на несколько частей и к каждой части добавить по одному заголовку TextView?

Примерно так:
Заголовок_1
item
item
item
Заголовок_2
item
item
item
Заголовок_3
item

Соответственно, с возможность добавления или удаления элемента из любой группы. Item'ы одинаковые.

Или только для каждой группы использовать отдельный recycler view?
shavuz
99 / 105 / 19
Регистрация: 29.01.2014
Сообщений: 527
06.11.2016, 17:27     RecyclerView и SQLite #8
Mazilo, ответ да. простой варриант это в каждом айтеме есть заголовок, текствью, он изначально скрыт, в листе прописываете переменную заголовок и держите ее пустой, в байндвьюхолдер проверяете, если заголовок пустой то ничего не делаете и его текствью остается скрытым, если же что то есть в заголовке то открываете текст вью и показываете заголовок.

есть еще варрианты но этот самый простой
Mazilo
36 / 36 / 44
Регистрация: 31.10.2014
Сообщений: 206
07.11.2016, 13:21  [ТС]     RecyclerView и SQLite #9
shavuz, давайте еще варианты
Mazilo
36 / 36 / 44
Регистрация: 31.10.2014
Сообщений: 206
08.11.2016, 23:22  [ТС]     RecyclerView и SQLite #10
Вопрос актуален.
Цитата Сообщение от Mazilo Посмотреть сообщение
Можно как-то один recycler view разделить на несколько частей и к каждой части добавить по одному заголовку TextView?
Примерно так:
Заголовок_1
item
item
item
Заголовок_2
item
item
item
Заголовок_3
item
Соответственно, с возможность добавления или удаления элемента из любой группы. Item'ы одинаковые.
Или только для каждой группы использовать отдельный recycler view?
xaat
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
09.11.2016, 01:05     RecyclerView и SQLite #11
Сделай уже с двумя рециклерами, кода чуть больше, но логичней все и проще поддерживать.
Паблито
2240 / 1813 / 564
Регистрация: 12.05.2014
Сообщений: 6,456
Завершенные тесты: 1
09.11.2016, 01:08     RecyclerView и SQLite #12
на форуме принято так: один вопрос - одна тема
и хоть бы для приличия написал бы как организованы эти группы и заголовки, где и как хранятся и т.д.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2016, 11:06     RecyclerView и SQLite
Еще ссылки по теме:

Retrofit Recyclerview Android
Android Android fragment + recyclerView
Android Recyclerview-stickyheaders
Android Список контактов с использованием RecyclerView и SQLite
NullPointerException в адаптере RecyclerView Android

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

Или воспользуйтесь поиском по форуму:
shavuz
99 / 105 / 19
Регистрация: 29.01.2014
Сообщений: 527
10.11.2016, 11:06     RecyclerView и SQLite #13
еще варриант это на каждый вид айтема сделать свой хмл, и в лист обьектов добавить переменную тайп, если тайп заголовок - делаешь инфлейт его хмлю, если не заголовок то соответственно его хмлю. в онБайнд делаешь свич по тайпу и работаешь с обьектами хмл пришедшего тайпа
Yandex
Объявления
10.11.2016, 11:06     RecyclerView и SQLite
Ответ Создать тему
Опции темы

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