2013-10-09 49 views
0

我想在我的應用中實現類似twitter的功能,就像第一次從服務器獲取數據並在ListView中顯示它時登錄的一樣,但是如果您再次打開應用程序而不註銷我不希望應用程序再次請求服務器獲取相同的數據,所以我的問題是在哪裏存儲以前獲取的數據,所以應用程序不會再次請求服務器並獲取新數據我已經實現了可刷新列表視圖,所以用戶將通過刷新列表來獲取新數據。存儲列表視圖數據時出現的問題

還有一件事是刷新後我想將新數據存儲到先前數據保存的同一位置,並且我只想存儲20個項目以防止內存溢出。請幫助別人。

我有一個arraylist ArrayList> fetch在我從服務器獲取數據時存儲數據。

+1

當用戶關閉應用程序時,將項目保存在文件中。或者可以將服務器的回覆保存到String(文件或共享首選項)並加載它們並創建並重新解析它們。 –

+0

好吧,我會盡量保存答覆作爲字符串,並重新解析它 –

+0

我這樣做String Store_json_in_sharedpreferences = new Gson()。toJson(fetch); \t \t \t e.putString(「ONGOING_DATA」,Store_json_in_sharedpreferences); \t \t \t e.commit();但它不能覆蓋這個字符串與新的數據,當我再次請求服務器?我想存儲所有的數據前一個和新的一個 –

回答

0

服務器必須以JSON或XML格式返回信息,只需將其放入共享首選項中,稍後根據一些內部標誌檢索/顯示即可。

例如,這裏有一個示例代碼來存儲的東西,在共享偏好:

private void writeStrToPreferences(String strKey, String str){ 
     if(strKey == null) return; 
     if(str == null) return; 
     if(str.length() <= 0) return; 

     SharedPreferences.Editor ed = getSharedPreferences(strKey, 0).edit(); 
     ed.putString(strKey, str); 
     ed.commit(); 
    } 

回讀也將是類似的,簡單

private String readStrFromPreferences(String strKey){ 
     if(strKey == null)return "NA"; 
     if(strKey.length() <= 0) return "NA"; 
     return getSharedPreferences(strKey, 0).getString(strKey, "NA"); 
    } 

欲瞭解更多,點擊此處查看文檔: http://developer.android.com/reference/android/content/SharedPreferences.html

+0

感謝您的答覆,但我把所有的JSON數據放入hashmap的數組列表,所以我如何將這個數組列表存儲在sharedpreferences中? –

+0

將它作爲一個字符串存儲在共享偏好設置中,然後將它映射出它...在從服務器獲得響應之後,將它放入共享偏好...簡單... –

相關問題