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

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

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

Сохранение состояния списка - Программирование Android

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

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

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

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

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

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

Сохранение состояния ViewPager - Программирование Android
Есть адаптер: public class QuestionFragmentPagerAdapter extends FragmentPagerAdapter { @Override public Fragment getItem(int...

Сохранение состояния Checkbox в Listview - Программирование Android
Возникла проблема с сохранением состояния checkbox'ов в Listview. Listview состоит из текста, напротив которого стоит чекбокс. Требуется...

Сохранение состояния при ротации - Программирование Android
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { View view =...

Сохранение состояния деятельности динамически созданных объектов - Программирование Android
Ребят, день добрый ! Задался вопросом, как сохранить состояние деятельности, ДИНАМИЧЕСКИ созданных, View, при смене активности? для...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
fraley
105 / 105 / 38
Регистрация: 24.05.2015
Сообщений: 317
30.10.2016, 23:07 #2
Цитата Сообщение от Koljanych Посмотреть сообщение
список формируется из массива
А массив то где храниться?
Если в SQLite, добавить еще одну колонку, прочитано допустим 1, не прочитано 0.
Koljanych
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 18
30.10.2016, 23:12  [ТС] #3
Да нигде он не хранится, просто в коде строки, и которых формируется массив. Сделать отметку прочитанности это еще пол беды, меня смущают сохраненки всего этого да и возможность обновления списка...
Pablito
2472 / 1917 / 595
Регистрация: 12.05.2014
Сообщений: 6,741
Завершенные тесты: 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
30 / 30 / 4
Регистрация: 20.01.2015
Сообщений: 225
31.10.2016, 08:13 #6
Вы сначала определитесь с алгоритмом хранения обновления статей.
Как бы я решил эту задачу. Статьи писал в тхт файлах и складывал в папку ассетс приложения. Каждый тхт файл включал в БД в которой предусмотрены ячейки для ваших желаний, идентификации, прочитана, понравилась, послать программиста, и тд. При выходе новой статьи обновляется версия БД, и версия приложения. Новая версия бд автоматически включает в себя новую статью.
Koljanych
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 18
31.10.2016, 12:15  [ТС] #7
Новая версия БД включает в себя новые статьи, но старые тоже включает, причем с пометками по умолчанию. Значит при обновлении новая база затрет старую и никаких отметок о прочтении не останется.

P.S. Как я могу сейчас определиться с процессом обновления, если я не знаю как мне это все хранить???!!!!
Alex_Fedor
30 / 30 / 4
Регистрация: 20.01.2015
Сообщений: 225
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 Посмотреть сообщение
Имхо в вашем случае лучше всего данные хранить в БД.
Я не против учить матчасть. Я всего лишь хотел спросить совета как лучше организовать приложение. Не знаю как хранить не потому, что ничего не знаю, а не знаю как лучше организовать хранение чтобы при обновлении не было проблем и метки пользователей о прочитанности статьи не "ушли". БД, как я понимаю, все равно будет заменяться каждый раз при обновлении... следовательно все затрется.
Pablito
2472 / 1917 / 595
Регистрация: 12.05.2014
Сообщений: 6,741
Завершенные тесты: 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 Посмотреть сообщение
все это обусловлено конструктором
Правильно ли я понял, что приложение создано в каком-то внешнем конструкторе, а не через написание кода? Если так, то спросите и разработчиков конструктора как вам решить свою проблему.
shavuz
104 / 110 / 21
Регистрация: 29.01.2014
Сообщений: 551
31.10.2016, 14:46 #14
а почему не использовать шаредпреференс, посмотрите есть такой класс в интернете : tinyDb он умеет сохранять в шерд преференс все что вам угодно(массивы, листы ...) у каждой статьи должен быть уникальный айди, лучше чтоб его что то генерировало, этот лист вы вытягиваете из шердпреференс каждый раз создаете констрактор адаптера, в адаптере смотите если айди статьи в листе то не выделяете, если статья была открыта добавляете айди в лист. при апдейте это не пострадает. только клир дата и удаление аппликации
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2016, 14:46
Привет! Вот еще темы с ответами:

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

Передача состояния switchCompat - Программирование Android
Есть класс, в котором реализуется список с помощью LayoutInflater. Циклом создается 3 одинаковых итема, в которых по 2 TextView и 1...

Обновление состояния ExpandableListView - Программирование Android
Есть кнопка при нажатии на которою в БД добавляется запись. Все записи с БД отображаются в ExpandableListView. Обновляю, с помощью...

Ошибка сохранения состояния ImageView - Программирование Android
Помогите стажеру, плиз Приложение должно менять ImageView из NavigationView. Реализовал это с помощью Intent.ACTION_PICK, в метод...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
31.10.2016, 14:46
Ответ Создать тему
Опции темы

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