Как реализовать кеширование ListView в Android

У меня есть ListView, который содержит большой набор данных.
В первый раз я загружаю все данные из Webservice.

Теперь я хочу кэшировать эти данные, чтобы, если я снова открою эту страницу, я могу извлечь данные из кеша, а не снова запрашивать веб-службу.

Как это сделать?.

Я предполагаю, что вы сохраняете данные, полученные из WebService в сериализуемом объекте (как вы указывали в своем вопросе до того, как вы его отредактировали).

Вы можете хранить сериализуемые объекты в файл и загружать их позже:

Хранить:

 FileOutputStream fileOutputStream = yourContext.openFileOutput(fileName, Context.MODE_PRIVATE); ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream); objectOutputStream.writeObject(yourObject); objectOutputStream.close(); 

Нагрузка:

 FileInputStream fileInputStream = yourContext.openFileInput(fileName); ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream); Object yourObject = (Object)objectInputStream.readObject(); objectInputStream.close(); 

Вы можете сделать это, сохранив данные, полученные через веб-службу, в базу данных SQLite, структурированную соответствующим образом. Если вы хотите получить более новые данные, чем последняя запись в своей базе данных, вы должны сохранить ключевое значение в файле SharedPreferences. Пример:

Я хотел бы получить все события календаря от веб-службы,

Сегодня пользователь только обращался к январским событиям от события №. 1 к номеру мероприятия. 10 (впервые они получены через веб-службу, хранятся локально в базе данных SQLite, а затем отображаются с помощью курсора).

Завтра, как только пользователь загрузит приложение, уже полученные данные будут загружаться из базы данных SQLite («кеш»), и пользователь получит только события, которые являются более новыми, чем 10 через веб-службу; И повторить процесс за день до этого (т. Е. Сохранить полученные запросы в SQLite DB, а затем отобразить их все от 1 до 'x').

В этом случае вы сохраняете события 1-10 в базе данных, и вы сохраняете «11» в своих общих предпочтениях, чтобы вы знали начальную точку для вашей следующей партии сущностей. Надеюсь, мне удалось провести вас.

Взгляните на варианты хранения, доступные на Android: http://developer.android.com/guide/topics/data/data-storage.html

Всего наилучшего 🙂

Ваш случай выглядит следующим образом:

Как кэшировать данные списка в android?

Вы должны решить, собираетесь ли вы использовать базу данных SQL, если вы хотите хранить информацию дольше, чем время жизни приложения, в противном случае адаптер будет в порядке.

На примерах Api, представленных в пакете Samples for SDK, есть несколько примеров списка с использованием ListAdapters. Например, List5.java.