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

Кэш ListView - Программирование Android

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

Здравствуйте. У меня имеется ListView который заполняется из json. Мне нужно сделать кэш, чтобы не обращаться каждый раз к серверу. Можно, конечно, сохранить json и потом работать с ним, но мне кажется это немного кривовато. ListView заполняется из ArrayList<HashMap<String, Object>>, следовательно нужно сохранить HashMap в файл а потом его достать. Облазил весь инет, но так и не нашел решения Подскажите, пожалуйста, как это сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2014, 22:02
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Кэш ListView (Программирование Android):

Что такое "кэш" в android? Как можно программно сохранить что-то в кэш?
что такое КЭШ в android? как можно программно сохранить что то в кэш??можете...

ListView. После добавления кнопки перестал быть доступен сам ListView
Кастомизировал ListView с помощью нескольких TextView. Но после того, как...

Listview вывод данных и переход по нажатию на другой Listview SQLite
Доброго извините за название темы, долго не мог сформировать название, В общем...

Передача данных из ListView в другой Activity в ListView
Добрый день. Пытаюсь разобраться с передачей данных с ListView, но выходит что...

Данные из SQlite в ListView, обработка события ListView
Ребят, есть БД, ListView. Надо при нажатии на строчку ListView вытащить данные...

ListView, ToggleButton, SQLite, CursorAdapter. Как найти idItem в ListView, где была нажата ToggleButton?
Добрый день. Затрудняюсь понять один момент: У меня есть ListView,...

8
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
03.11.2014, 18:11 #2
Cuda1, добрый день!
Не хотите ли вы сказать, что JSON не меняется от запуска к запуску? Я делал подобное, когда нужно было вывести некий список, затем при нажатии на элемент перейти в другой экран, потом вернуться и вывести закэшированный список заново. Получалось быстро и не требовалось повторно обращаться к серверу. Но после завершения программы, конечно же, к серверу обращаться приходилось снова.
Если вы хотите сохранять JSON или список в файле, почитайте, пожалуйста, про сохранение файлов, продумайте структуру данных. Насколько я понял, у вас это ключ и данные об объекте. Можете даже попытаться сохранять в SharedPreferences, если данных немного.
0
Netscape
374 / 361 / 52
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
03.11.2014, 18:28 #3
Вообще-то, сохранять json в файл и потом работать с ним, нормальная практика.
0
Cuda1
18 / 18 / 7
Регистрация: 08.10.2014
Сообщений: 98
03.11.2014, 19:15  [ТС] #4
Да, сразу не дошло, что json у меня меняется периодически, поэтому нужно записывать его в файл. Сейчас вот как раз пробую объект json перевести в строку и сохранить через SharedPreferences, а потом получить строку назад и перевести ее в объект.

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

Копирование данных из 1 listView во 2 listView
Нужно что бы при нажатии на один элемент в первом ListView он копировался во...

Как сохранять значения именно в кэш-память, а не в оперативку?
Как сохранять значения именнов кэш память а не в оперативку?? Какие есть...

Можно ли взломать apk чтобы кэш скачивался по вай-фай без проверки?
Можно ли взломать apk чтобы кэш скачивался по вай-фай без проверки?

Использование ListView в ListView
Всем привет. Можете показать как использовать ListView в ListView, с...


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

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

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