2011-04-08 72 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服務