2011-04-08 36 views
6

我有一个包含100行的列表视图。这是我第一次加载Web服务中的所有数据。我想要缓存该数据,以便如果打开该页面,我应该从缓存而不是从Web服务中获取它。我怎样才能做到这一点?如何在android中缓存listview数据?

+0

使用这个例子,我刚刚工作it.refer这个问题。 [http://stackoverflow.com/questions/15154164/in-android-how-to-implement-cache-in-listview][1] [1]:HTTP://计算器。 com/questions/15154164/in-android-how-to-implement -access-cache-in-listview – jithu 2013-03-01 14:48:45

回答

3

如果你的数据是很简单的,只是将它们存储在一个数组中,并使用类似的ArrayAdapter将数据绑定到列表视图。

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

1

将您的数据保存在SQLite表中,并将其作为缓存下次检查该表是否存在。如果表存在查询而不是webz :-)

1

您可以将数据作为JSON文件存储在应用程序的internal storage space中。我发现这是一种更简单的方法,因为您可以使用类似Gson这样的库轻松将JSON映射到Model类。如果您拥有的数据不会像您在传统数据库中那样“更新”(即使您仍然能够更新您的JSON数据,但方式不同),您通常会遵循此方法。

+0

我想知道即使手机已经植入,内部存储也不可访问吗? – ingsaurabh 2011-04-08 13:42:47

+0

内部存储应该始终可用,除非你没有空间 – binnyb 2011-04-08 13:53:20

+0

对不起,我没有问,实际上在文档中写道,在内部存储不能访问其他应用程序,甚至用户,我想知道这种情况仍然是真的如果手机甚至生根? – ingsaurabh 2011-04-08 14:11:24

0

即时假设,因为你用这个词缓存 - 数据过期每X分钟/小时

如果数据发生变化每隔几分钟只需保存你的web服务的响应在某些局部变量(如果只需要使用一个单一的列表视图活动)

或将其保存在全局变量(扩展应用程序类,如果你的数据变化,每几个小时,然后更好的主意是将其保存在源码从这里公开公共变量)

(如果你的数据需要复杂的查询/连接等等)

或者干脆将它保存为一个文件(以JSON或XML格式),并检查该文件的有效期和是否仍然有效,只是对其进行解码,而不是再打电话给你的web服务