2013-10-09 24 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

将它作为一个字符串存储在共享偏好设置中,然后将它映射出它...在从服务器获得响应之后,将它放入共享偏好...简单... –

相关问题