2016-08-25 42 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並驗證我的答案 –