Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Koljanych
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 18
1

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

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

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

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

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

Сохранение состояния активности
Всем привет, в ходе разработки клиента для сервера возник такой вопрос, можно...

Сохранение состояния ViewPager
Есть адаптер: public class QuestionFragmentPagerAdapter extends...

Сохранение состояния фрагмента
Всем привет. Есть куча фрагментов, реализован переход через repalce, как...

Сохранение состояния приложения
Допустим пользователь выключил приложение, как сделать чтобы при повторном...

Сохранение состояния при ротации
@Override public View onCreateView(LayoutInflater inflater, ViewGroup...

13
fraley
110 / 110 / 43
Регистрация: 24.05.2015
Сообщений: 329
30.10.2016, 23:07 2
Цитата Сообщение от Koljanych Посмотреть сообщение
список формируется из массива
А массив то где храниться?
Если в SQLite, добавить еще одну колонку, прочитано допустим 1, не прочитано 0.
0
Koljanych
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 18
30.10.2016, 23:12  [ТС] 3
Да нигде он не хранится, просто в коде строки, и которых формируется массив. Сделать отметку прочитанности это еще пол беды, меня смущают сохраненки всего этого да и возможность обновления списка...
0
Pablito
2754 / 2186 / 740
Регистрация: 12.05.2014
Сообщений: 7,654
Завершенные тесты: 1
30.10.2016, 23:17 4
можно вместе со статьей отдавать ее уникальный id
прочитал статью - сохранил её id где-нибудь
0
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 переменную к ячейке массива, которая и будет признаком статьи на прочитанность. Но вот как это все хранить? Как считывать при построении списка? И уж тем более как с этим работать, когда я выпускаю обновление с новыми статьями? Ума не приложу. БД наверное не вариант, потому что она затрется новой при обновлении... Использовать шаредПрефенсес для каждого пункта - бред (я далеко не программист, но мне так кажется...)
0
Alex_Fedor
42 / 42 / 5
Регистрация: 20.01.2015
Сообщений: 279
31.10.2016, 08:13 6
Вы сначала определитесь с алгоритмом хранения обновления статей.
Как бы я решил эту задачу. Статьи писал в тхт файлах и складывал в папку ассетс приложения. Каждый тхт файл включал в БД в которой предусмотрены ячейки для ваших желаний, идентификации, прочитана, понравилась, послать программиста, и тд. При выходе новой статьи обновляется версия БД, и версия приложения. Новая версия бд автоматически включает в себя новую статью.
0
Koljanych
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 18
31.10.2016, 12:15  [ТС] 7
Новая версия БД включает в себя новые статьи, но старые тоже включает, причем с пометками по умолчанию. Значит при обновлении новая база затрет старую и никаких отметок о прочтении не останется.

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

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

Сохранение состояния Checkbox в Listview
Возникла проблема с сохранением состояния checkbox'ов в Listview. Listview...

Сохранение состояния деятельности динамически созданных объектов
Ребят, день добрый ! Задался вопросом, как сохранить состояние деятельности,...

Сохранение состояния приложения с целью экономии времени при последующих запусках
Всем привет. Появился небольшой вопрос. Допустим я запустил какое-то...


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

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

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