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

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

Войти
Регистрация
Восстановить пароль
 
Koljanych
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 18
#1

Сохранение состояния списка - Android

30.10.2016, 23:02. Просмотров 236. Ответов 13

Привет. Прошу помощи в организации следующей вещи:

Имеется приложение, построенное в виде списка (ListView), список формируется из массива, который я самостоятельно заполняю. Затем, при нажатии на пункт списка, открывается другая активити (естественно туда передается параметр) со статьей. Так вот, пользователи просят, чтобы приложение умело запоминать прочитана статья или нет (то есть был ли нажат пункт списка или еще пока нет...). Сложности еще в том, что приложение я периодически обновляю, добавляя туда новых статей, следовательно нужно помнить и старые статьи (прочитаны или нет) и принимать во внимание новые.

Никак не могу придумать алгоритм, который поможет мне справиться с этой задачей. Прошу Вашей помощи!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2016, 23:02     Сохранение состояния списка
Посмотрите здесь:

Android Переход на другую активность с сохранением состояния главной
Температура аккамулятора в строку состояния Android
Сохранение состояния деятельности динамически созданных объектов Android
Уведомления в строке состояния. Как сделать уведомление больше в высоту? Android
Сохранение состояния при ротации Android
Android Сохранение состояния активности
Сохранение состояния Checkbox в Listview Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fraley
103 / 103 / 37
Регистрация: 24.05.2015
Сообщений: 312
30.10.2016, 23:07     Сохранение состояния списка #2
Цитата Сообщение от Koljanych Посмотреть сообщение
список формируется из массива
А массив то где храниться?
Если в SQLite, добавить еще одну колонку, прочитано допустим 1, не прочитано 0.
Koljanych
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 18
30.10.2016, 23:12  [ТС]     Сохранение состояния списка #3
Да нигде он не хранится, просто в коде строки, и которых формируется массив. Сделать отметку прочитанности это еще пол беды, меня смущают сохраненки всего этого да и возможность обновления списка...
Паблито
2240 / 1813 / 564
Регистрация: 12.05.2014
Сообщений: 6,456
Завершенные тесты: 1
30.10.2016, 23:17     Сохранение состояния списка #4
можно вместе со статьей отдавать ее уникальный id
прочитал статью - сохранил её id где-нибудь
Koljanych
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 18
30.10.2016, 23:25  [ТС]     Сохранение состояния списка #5
Сейчас все работает так: один элемент массива состоит из названия статьи и имени картинки для элемента списка (все это обусловлено конструктором). Элементы массива находятся в определенном порядке, и при нажатии на элемент в списке передается номер нажатой позиции (0,1,2,,,,4,9...). Передается это все в другое активити, там этот номер позиции используется для подгрузки в webview определнного txt файла - 0.txt к примеру.

Отвязать массив от очередности в принципе вроде как смогу, добавлю в конструктор параметр( с именем файла) и при нажатии буду через bundle его передавать.

Так же по сути я могу прикрутить boolean переменную к ячейке массива, которая и будет признаком статьи на прочитанность. Но вот как это все хранить? Как считывать при построении списка? И уж тем более как с этим работать, когда я выпускаю обновление с новыми статьями? Ума не приложу. БД наверное не вариант, потому что она затрется новой при обновлении... Использовать шаредПрефенсес для каждого пункта - бред (я далеко не программист, но мне так кажется...)
Alex_Fedor
29 / 29 / 4
Регистрация: 20.01.2015
Сообщений: 215
31.10.2016, 08:13     Сохранение состояния списка #6
Вы сначала определитесь с алгоритмом хранения обновления статей.
Как бы я решил эту задачу. Статьи писал в тхт файлах и складывал в папку ассетс приложения. Каждый тхт файл включал в БД в которой предусмотрены ячейки для ваших желаний, идентификации, прочитана, понравилась, послать программиста, и тд. При выходе новой статьи обновляется версия БД, и версия приложения. Новая версия бд автоматически включает в себя новую статью.
Koljanych
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 18
31.10.2016, 12:15  [ТС]     Сохранение состояния списка #7
Новая версия БД включает в себя новые статьи, но старые тоже включает, причем с пометками по умолчанию. Значит при обновлении новая база затрет старую и никаких отметок о прочтении не останется.

P.S. Как я могу сейчас определиться с процессом обновления, если я не знаю как мне это все хранить???!!!!
Alex_Fedor
29 / 29 / 4
Регистрация: 20.01.2015
Сообщений: 215
31.10.2016, 13:00     Сохранение состояния списка #8
Цитата Сообщение от Koljanych Посмотреть сообщение
если я не знаю как мне это все хранить
Имхо в вашем случае лучше всего данные хранить в БД. Вам все равно придется с этим разбираться. Как говаривал наш прапор, учите матчасть не дай бог пригодиться. Здесь все доступно, на пару вечеров. Это даст вам дальнейшее направление движения.
http://startandroid.ru/ru/uroki/vse-...yh-sqlite.html
Koljanych
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 18
31.10.2016, 13:35  [ТС]     Сохранение состояния списка #9
Цитата Сообщение от Alex_Fedor Посмотреть сообщение
Имхо в вашем случае лучше всего данные хранить в БД.
Я не против учить матчасть. Я всего лишь хотел спросить совета как лучше организовать приложение. Не знаю как хранить не потому, что ничего не знаю, а не знаю как лучше организовать хранение чтобы при обновлении не было проблем и метки пользователей о прочитанности статьи не "ушли". БД, как я понимаю, все равно будет заменяться каждый раз при обновлении... следовательно все затрется.
Паблито
2240 / 1813 / 564
Регистрация: 12.05.2014
Сообщений: 6,456
Завершенные тесты: 1
31.10.2016, 13:38     Сохранение состояния списка #10
еще раз, медленно - что мешает к каждой статье привязать уникальный номер?

пользователь просто будет хранить эти номера у себя где-нибудь - хоть в базе, хоть в массиве, который потом сохранять в файл или sharedpreference или еще где-то
Wurgengel
13 / 13 / 1
Регистрация: 23.02.2012
Сообщений: 66
31.10.2016, 14:21     Сохранение состояния списка #11
А почему нельзя при обновлении БД, не обновлять все строки, а добавлять новые? Будет функция update, в которой вы будете добавлять статьи, а не записывать их заново, относительно версии БД.
Koljanych
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 18
31.10.2016, 14:23  [ТС]     Сохранение состояния списка #12
Цитата Сообщение от Wurgengel Посмотреть сообщение
А почему нельзя при обновлении БД, не обновлять все строки, а добавлять новые? Будет функция update, в которой вы будете добавлять статьи, а не записывать их заново, относительно версии БД.
Можно. Так вот я не знал об этом, поэтому и спрашивал совета, как все организовать. Сложно что-то делать, когда не знаешь куда копать. Спасибо.
Alexvp
107 / 71 / 8
Регистрация: 03.08.2014
Сообщений: 344
31.10.2016, 14:45     Сохранение состояния списка #13
Цитата Сообщение от Koljanych Посмотреть сообщение
все это обусловлено конструктором
Правильно ли я понял, что приложение создано в каком-то внешнем конструкторе, а не через написание кода? Если так, то спросите и разработчиков конструктора как вам решить свою проблему.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2016, 14:46     Сохранение состояния списка
Еще ссылки по теме:

Сохранение состояния приложения с целью экономии времени при последующих запусках Android
Сохранение переменной Android
Сохранение в SharedPreferences Android
Android Обновление состояния ExpandableListView
Android Как передать сервису состояния checkbox из MainActivity?

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

Или воспользуйтесь поиском по форуму:
shavuz
99 / 105 / 19
Регистрация: 29.01.2014
Сообщений: 527
31.10.2016, 14:46     Сохранение состояния списка #14
а почему не использовать шаредпреференс, посмотрите есть такой класс в интернете : tinyDb он умеет сохранять в шерд преференс все что вам угодно(массивы, листы ...) у каждой статьи должен быть уникальный айди, лучше чтоб его что то генерировало, этот лист вы вытягиваете из шердпреференс каждый раз создаете констрактор адаптера, в адаптере смотите если айди статьи в листе то не выделяете, если статья была открыта добавляете айди в лист. при апдейте это не пострадает. только клир дата и удаление аппликации
Yandex
Объявления
31.10.2016, 14:46     Сохранение состояния списка
Ответ Создать тему
Опции темы

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