You can do this by saving the data obtainted through the web service into an SQLite Database, structured accordingly. If you would like to get newer data than the last record in your database, than you should save a key value in your SharedPreferences file. Example:
I would like to get all calendar events from a web service,
Today the user only accessed January's events from event no. 1 to event no. 10 (for the first time, these are obtained through the web service, stored locally in the SQLite Database, and then displayed with the use of a cursor).
Tomorrow, once the user loads the application, the already retrieved data will load from the SQLite Database ('the cache') and the user will only get events which are newer than 10 through the web service; and repeat the process of the day before (i.e. store retrieved entites in the SQLite DB, and then display them all from 1 to 'x').
In this case you store events 1 to 10 in the database and you store '11' in your shared preferences so you would know the starting point for your next batch of entities to obtained. I hope I managed to guide you.
Take a look at the storage options available on Android: http://developer.android.com/guide/topics/data/data-storage.html
All the best :)