如何在android中缓存listview数据?

如何在android中缓存listview数据?,android,caching,listview,Android,Caching,Listview,我有一个包含100行的Listview。这是我第一次从Web服务加载所有数据。我想缓存该数据,以便如果我打开该页面,我应该从缓存而不是从Web服务获取它。如何执行此操作?将数据保存在SQLite表中,并在下次检查该表是否存在时将其用作缓存。如果该表存在,则可以使用该查询代替webz:-)将数据作为文件存储在应用程序的数据库中。我发现这是一种更简单的方法,因为您可以使用类似的库轻松地将JSON映射到模型类。如果您拥有的数据不会像在传统数据库中那样被“更新”(尽管您仍然能够更新JSON数据,只是方式

我有一个包含100行的Listview。这是我第一次从Web服务加载所有数据。我想缓存该数据,以便如果我打开该页面,我应该从缓存而不是从Web服务获取它。如何执行此操作?

将数据保存在SQLite表中,并在下次检查该表是否存在时将其用作缓存。如果该表存在,则可以使用该查询代替webz:-)

将数据作为文件存储在应用程序的数据库中。我发现这是一种更简单的方法,因为您可以使用类似的库轻松地将JSON映射到模型类。如果您拥有的数据不会像在传统数据库中那样被“更新”(尽管您仍然能够更新JSON数据,只是方式不同),您通常会采用这种方法。

我假设由于您使用术语缓存,因此数据每x分钟/小时过期一次

如果数据每隔几分钟更改一次,只需将webservice响应保存在某个局部变量中(如果它只需要用于单个listview活动)

或者将其保存在全局变量中(扩展应用程序类并从此处公开一个公共变量)

如果您的数据每隔几个小时更改一次,那么最好将其保存在sqlite中(如果您的数据需要复杂的查询/连接等)


或者简单地将其保存为一个文件(json或xml格式)并检查此文件和有效期,如果仍然有效,则只需对其进行解码,而不是再次调用Web服务

如果数据足够简单,只需将其存储在数组中,并使用类似于ArrayAdapter的方法将数据绑定到列表视图


如果您的数据更复杂,那么SQLite表可能更可取。在这种情况下,请使用类似于SimpleCorsorAdapter

的方法。我想知道,即使手机已根目录,内部存储是否也无法访问?内部存储应该始终可用,除非您没有空间抱歉,我不是在问这个问题,事实上,在文档中,其他应用程序和我想知道的用户都无法访问内部存储。如果手机是根设备,那么这种情况是否仍然存在?我认为可以肯定地说,在根设备上,大多数数据将对用户公开,除非您提供某种形式的加密来保护它。使用此示例,我刚开始做。请回答这个问题。[ [1]: