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

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

Восстановить пароль Регистрация
 
Koljanych
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 18
30.10.2016, 23:02     Сохранение состояния списка #1
Привет. Прошу помощи в организации следующей вещи:

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

Никак не могу придумать алгоритм, который поможет мне справиться с этой задачей. Прошу Вашей помощи!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fraley
74 / 74 / 28
Регистрация: 24.05.2015
Сообщений: 210
30.10.2016, 23:07     Сохранение состояния списка #2
Цитата Сообщение от Koljanych Посмотреть сообщение
список формируется из массива
А массив то где храниться?
Если в SQLite, добавить еще одну колонку, прочитано допустим 1, не прочитано 0.
Koljanych
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 18
30.10.2016, 23:12  [ТС]     Сохранение состояния списка #3
Да нигде он не хранится, просто в коде строки, и которых формируется массив. Сделать отметку прочитанности это еще пол беды, меня смущают сохраненки всего этого да и возможность обновления списка...
Паблито
не спать!
1794 / 1528 / 475
Регистрация: 12.05.2014
Сообщений: 5,574
Завершенные тесты: 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
16 / 16 / 2
Регистрация: 20.01.2015
Сообщений: 132
31.10.2016, 08:13     Сохранение состояния списка #6
Вы сначала определитесь с алгоритмом хранения обновления статей.
Как бы я решил эту задачу. Статьи писал в тхт файлах и складывал в папку ассетс приложения. Каждый тхт файл включал в БД в которой предусмотрены ячейки для ваших желаний, идентификации, прочитана, понравилась, послать программиста, и тд. При выходе новой статьи обновляется версия БД, и версия приложения. Новая версия бд автоматически включает в себя новую статью.
Koljanych
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 18
31.10.2016, 12:15  [ТС]     Сохранение состояния списка #7
Новая версия БД включает в себя новые статьи, но старые тоже включает, причем с пометками по умолчанию. Значит при обновлении новая база затрет старую и никаких отметок о прочтении не останется.

P.S. Как я могу сейчас определиться с процессом обновления, если я не знаю как мне это все хранить???!!!!
Alex_Fedor
16 / 16 / 2
Регистрация: 20.01.2015
Сообщений: 132
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 Посмотреть сообщение
Имхо в вашем случае лучше всего данные хранить в БД.
Я не против учить матчасть. Я всего лишь хотел спросить совета как лучше организовать приложение. Не знаю как хранить не потому, что ничего не знаю, а не знаю как лучше организовать хранение чтобы при обновлении не было проблем и метки пользователей о прочитанности статьи не "ушли". БД, как я понимаю, все равно будет заменяться каждый раз при обновлении... следовательно все затрется.
Паблито
не спать!
1794 / 1528 / 475
Регистрация: 12.05.2014
Сообщений: 5,574
Завершенные тесты: 1
31.10.2016, 13:38     Сохранение состояния списка #10
еще раз, медленно - что мешает к каждой статье привязать уникальный номер?

пользователь просто будет хранить эти номера у себя где-нибудь - хоть в базе, хоть в массиве, который потом сохранять в файл или sharedpreference или еще где-то
Wurgengel
13 / 13 / 1
Регистрация: 23.02.2012
Сообщений: 62
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 Обновление состояния ExpandableListView
Android Как передать сервису состояния checkbox из MainActivity?

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

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

Метки
listview, список
Опции темы

Текущее время: 17:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru