2016-08-25 25 views
-2

您好我正在从在线服务器获取ListView的数据,如果用户在线,则显示为正常。如何显示从在线http服务器检索到的离线数据

但我想在离线模式下显示ListView数据也意味着它必须显示用户在线时检索到的数据。

示例:如果从在线服务器检索到10条记录,并且在用户在线时显示在ListView中。 现在,如果用户离线,那么ListView应显示先前检索到的10条记录,直到用户上线。

最好的例子是Facebook,它也显示离线模式的帖子。

在此先感谢。

+0

您使用的数据库联机? – Stefan

+0

你如何知道用户是在线还是离线? – CodeWalker

+0

不,我不使用数据库...我从谷歌应用程序引擎服务器 –

回答

1

我觉得你应该请按以下步骤:

当用户来到这个Activity(其中有ListView控件)

  1. 路线从您的数据库中的所有记录,并添加到您的ListView,向用户显示这些本地记录(用户在线时已加载,或者第一次没有用户记录)。

  2. 创建的AsyncTask打电话给你的API,并从服务器获取记录,这些记录添加到数据库

  3. 列表视图reloadData(获得再次数据库中的记录),以显示新的记录,以用户在的AsyncTask onPostExecute功能

我希望这些可以帮助ü,
最好的问候

+0

谢谢,我应该需要为此创建本地数据库 –

+0

当然,你需要本地数据库 – Vaycent

1

我的建议是保存在共享prefere数据/ JSON nces,当你在线从服务器获取json时,以及脱机时从共享首选项获取json,所以你不必更改其他代码。

if(online) 
{ 
// call http server and get json string 
// save this json string in shared preference 
} 
else{ 
// 
// check if shared pre contains data (not null) and get data from local shared pref 
} 

//进一步代码是相同

+0

哪个更好,天气本地sqlite数据库或共享prefrences –

+0

取决于你的使用,如果你只想在脱机模式下显示数据,而不想有任何与数据库相关的操作,那么我的视图是使用共享首选项因为它使用更少的内存,速度更快,而且代码也更少,但是如果您的需要与数据库相关,那么Sqlite是很好的 –

+0

欢迎您 请upvote并验证我的答案 –

相关问题