Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
y_e_p
3 / 3 / 0
Регистрация: 15.09.2013
Сообщений: 27
#1

Обновление ListView при изменении значений в базе SQLite

22.07.2014, 16:04. Просмотров 2318. Ответов 14
Метки нет (Все метки)

Доброго времени суток господа.
У меня такой вопрос.
Как лучше сделать обновление данных в ArrayList,а так же занесение данных в базу??
Обновление через потоки(Runnable) или через AsynkTask или через main thread??
В адаптере notifyDataSetChanged()???или есть другие способы?
Может у кого есть кусочки кода,чтобы я имел представление как такое сделать,голова уже болит просто.

Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.07.2014, 16:04
Ответы с готовыми решениями:

Listview вывод данных и переход по нажатию на другой Listview SQLite
Доброго извините за название темы, долго не мог сформировать название, В общем...

Обновление ProgressBar-a во время загрузки SQLite DB при включении приложения
Добрый день. Моя БД обновляется довольно долго поэтому хотелось бы показать...

Как найти id записи в SQlite таблице при клике на кнопку расположенную в Listview item?
привет ! подскажите пожалуйста решение((( Кейс: у меня есть листвью ,...

Данные из SQlite в ListView, обработка события ListView
Ребят, есть БД, ListView. Надо при нажатии на строчку ListView вытащить данные...

Обновление данных ListView при подключении к сети WiFi Android
Написал приложение для получения курса валют с сайта РБК. Все работает кроме...

14
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
22.07.2014, 17:50 #2
когда закончите транзакцию с БД обновите данные в адаптере. Затем вызовите notifyDataSetChanged() или переназначьте листу измененный адаптер.
0
y_e_p
3 / 3 / 0
Регистрация: 15.09.2013
Сообщений: 27
23.07.2014, 00:18  [ТС] #3
KillAndEat, так и делаю,по потокам не нужно разбивать,чтобы не нагружать UI???
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
23.07.2014, 08:05 #4
y_e_p, это смотря какой способ изменения данных, если длительный, то лучше переносить в отдельный поток, а по завершении его - обновлять ListView.
А запись в БД относительна быстра, поэтому ей поток не нужен, считаю.
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
23.07.2014, 11:33 #5
Цитата Сообщение от Rube Посмотреть сообщение
А запись в БД относительна быстра, поэтому ей поток не нужен, считаю.
Но лучше всё равно выносить в отдельный поток.
1
y_e_p
3 / 3 / 0
Регистрация: 15.09.2013
Сообщений: 27
23.07.2014, 11:39  [ТС] #6
YuraAAA, хорошо,а как лучше,через javовские Thread (или runnable) или через AsyncTask???
0
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
23.07.2014, 15:55 #7
y_e_p, все зависит от религии) Я таски не люблю и ипользую триды или лодеры.
1
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
26.07.2014, 22:28 #8
Сам недавно начал мучаться с AsyncTask. Использовал чужой код из многих классов, кое-как работает. Недавно обнаружил ещё один способ: работу через AsyncQueryHandler. Он устарел, или стоит им попробовать?
0
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
26.07.2014, 22:59 #9
CoolMind, если что то устаревает лучше не использовать это=) Чем вас обычные нити не устраивают? все предельно просто же.
0
Netscape
374 / 361 / 52
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
26.07.2014, 23:00 #10
Писал для кого-то пример, может, найдете что-то полезное для себя:
https://bitbucket.org/sdex/contentproviderexample

SQLite + cupboard (ORM) + ContentProvider.
1
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
26.07.2014, 23:14 #11
KillAndEat, я пока ещё не определился, устарело или нет, надо побольше почитать... Про AsyncTask, как говорится, на каждому углу пишут, а вот про другие способы - поменьше. Нити, кстати, тоже неплохой способ (но я им ещё не пользовался ни разу). Спасибо за предложение.

Добавлено через 6 минут
Netscape, спасибо за пример.
Вообще, для меня работа с БД в Android (вместе с этой Java) - это просто мрак. Начиная с самой СУБД SQLite, заканчивая обменом данными с сервером. Писать кучу каких-то адаптеров, циклом грузить их в курсоры, выводить данные через курсоры в ListView, который описан в XML, который состоит из полей, которые тоже описаны в XML, копировать базу данных из assets в другое место без возможности сохранить изменённую базу обратно в assets. Опять же, непонятно к чему созданные события onCreate и onUpgrade, которых нет в "нормальных" базах. Ну это просто мазохизм. И чем дальше узнаю, тем больше понимаю, что такого извращённого способа работы с БД, какой придумали в Android, я ещё не видел.
0
Netscape
374 / 361 / 52
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
26.07.2014, 23:21 #12
CoolMind, я думаю, нужно просто привыкнуть. Первоее время я тоже плевался, писал сам запросы для создания таблиц и т.п. А потом привык, открыл для себя ORM, курсор адаптер, контент провайдер и мне понравилось.
onCreate - вызывается только один раз, когда базы нет.
onUpgrade - вызывается когда меняется версия БД, и там можно, например добавить в уже готовую базу новые поля и таблицы.
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
27.07.2014, 11:43 #13
Цитата Сообщение от CoolMind Посмотреть сообщение
Писать кучу каких-то адаптеров, циклом грузить их в курсоры, выводить данные через курсоры в ListView, который описан в XML, который состоит из полей, которые тоже описаны в XML
Толи дело Access)
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
28.07.2014, 01:11 #14
Netscape, спасибо за информацию. Про ORM мельком глянул на Хабре и понял, что пока не готов его применить.
Всегда удивлял onUpgrade. Подскажите, пожалуйста, а нельзя ли просто снести пользовательскую базёнку и записать на это место новую версию базы из APK?
Rube, точно. Сам много лет в нём программировал и привык к простоте форм и запросов, после этого возня с адаптерами кажется излишней. Я с удовольствием спрыгнул с Аксесса и решил заняться новыми технологиями. Сначала было трудно, мало что понятно, но со временем привыкаешь, а потом становится даже легче, и большинство проблем описано на stackoverflow. Правда, периодически приходится бороться с Android Studio и Gradle, а на Eclipse без смеха смотреть уже невозможно.
0
Netscape
374 / 361 / 52
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
28.07.2014, 16:05 #15
Цитата Сообщение от CoolMind Посмотреть сообщение
а нельзя ли просто снести пользовательскую базёнку и записать на это место новую версию базы из APK?
можно, если не нужна информация которая была внесена туда пользователем.
0
28.07.2014, 16:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.07.2014, 16:05

ListView, ToggleButton, SQLite, CursorAdapter. Как найти idItem в ListView, где была нажата ToggleButton?
Добрый день. Затрудняюсь понять один момент: У меня есть ListView,...

ListView + SQLite
Привет. Взял код из урока 52 на startandroid, немного его изменил public...

SQLite в ListView
Добрый вечер. Нуждаюсь в помощи. Не могу сделать так, чтоб данные с таблицы...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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