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

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

Войти
Регистрация
Восстановить пароль
 
Cuda1
18 / 18 / 7
Регистрация: 08.10.2014
Сообщений: 98
#1

Кэш ListView - Android

02.11.2014, 22:02. Просмотров 509. Ответов 8
Метки нет (Все метки)

Здравствуйте. У меня имеется ListView который заполняется из json. Мне нужно сделать кэш, чтобы не обращаться каждый раз к серверу. Можно, конечно, сохранить json и потом работать с ним, но мне кажется это немного кривовато. ListView заполняется из ArrayList<HashMap<String, Object>>, следовательно нужно сохранить HashMap в файл а потом его достать. Облазил весь инет, но так и не нашел решения Подскажите, пожалуйста, как это сделать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
03.11.2014, 18:11     Кэш ListView #2
Cuda1, добрый день!
Не хотите ли вы сказать, что JSON не меняется от запуска к запуску? Я делал подобное, когда нужно было вывести некий список, затем при нажатии на элемент перейти в другой экран, потом вернуться и вывести закэшированный список заново. Получалось быстро и не требовалось повторно обращаться к серверу. Но после завершения программы, конечно же, к серверу обращаться приходилось снова.
Если вы хотите сохранять JSON или список в файле, почитайте, пожалуйста, про сохранение файлов, продумайте структуру данных. Насколько я понял, у вас это ключ и данные об объекте. Можете даже попытаться сохранять в SharedPreferences, если данных немного.
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
03.11.2014, 18:28     Кэш ListView #3
Вообще-то, сохранять json в файл и потом работать с ним, нормальная практика.
Cuda1
18 / 18 / 7
Регистрация: 08.10.2014
Сообщений: 98
03.11.2014, 19:15  [ТС]     Кэш ListView #4
Да, сразу не дошло, что json у меня меняется периодически, поэтому нужно записывать его в файл. Сейчас вот как раз пробую объект json перевести в строку и сохранить через SharedPreferences, а потом получить строку назад и перевести ее в объект.

Добавлено через 4 минуты
Как сохранить HashMap<String, Object> я на самом деле не нашел, но пока и не надо, если с сохранением json все получится.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
03.11.2014, 19:30     Кэш ListView #5
Cuda1, всё же, как вы определите, что JSON поменялся, не обратившись на сервер? Какой смысл в хранении в файле?
Cuda1
18 / 18 / 7
Регистрация: 08.10.2014
Сообщений: 98
03.11.2014, 19:37  [ТС]     Кэш ListView #6
CoolMind, смысл такой, что при первом запуске в лист загружается json, а при последующих запусках лист будет заполнятся из кэша. Ну и я не говорил что не буду обращаться на сервер) А при обновлении листа с сервера буду перезаписывать старый json.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
03.11.2014, 23:09     Кэш ListView #7
Cuda1, да, такой способ часто используется. Потому и надо хранить json в отдельной переменной типа static в отдельном классе. При старте она будет обнуляться, потом читаете с сервера один раз, записываете в эту переменную, выполняете действия с адаптером. Если нужно будет поменять, снова меняете эту статическую переменную. У меня так.
Cuda1
18 / 18 / 7
Регистрация: 08.10.2014
Сообщений: 98
03.11.2014, 23:37  [ТС]     Кэш ListView #8
CoolMind, разве ее не надо обнулять только тогда, когда получен ответ с сервера. А то может ведь так быть что json по каким-либо причинам не получили, а переменную обнулили и в итоге ничего не увидим.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2014, 11:30     Кэш ListView
Еще ссылки по теме:

Android Не обновляется ListView
Scroll listview Android
Android Как сохранять значения именно в кэш-память, а не в оперативку?
Android ListView с разделителями
Android Траблы с ListView

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

Или воспользуйтесь поиском по форуму:
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
04.11.2014, 11:30     Кэш ListView #9
Cuda1, да, неплохой вариант развития событий вы описали. Но, думаю, что если ничего не получили, то есть проблема с соединением с сервером, а значит, и следующие действия тоже будут под вопросом. Впрочем, предусмотрите этот вариант.
Yandex
Объявления
04.11.2014, 11:30     Кэш ListView
Ответ Создать тему
Опции темы

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