我从Web服务器加载数据并将结果显示在列表视图中。代码工作正常,但列表是空的,直到数据从AsyncTask加载完成,每次用户离开屏幕并返回列表时必须再次加载。我在我的应用程序中有多个列表,我使用相同的方法,当我的所有列表必须每次都加载整个数据时,它看起来很笨拙和错误。
因为现在我正考虑将数据存储在某个地方,这样我就可以显示旧数据,直到我从服务器获得更新的数据,然后用新数据更新列表。
所以我的第一个问题是,我应该在哪里存储这些数据?在文件中?或者我应该创建一个SQLite数据库并将列表对象存储在那里?
由于我的应用程序中有多个列表,我认为数据库方法是最佳解决方案。然后我可以获取给定对象/表的最新插入ID,并检查服务器是否有新数据要检索。
我还读过AsynTaskLoader类,它似乎正在寻找我想要的东西,但我真的找不到任何好的指南。而且由于我的AsyncTask已经完全正常工作,因此实现加载器可能是太多不必要的工作。
那么这个问题的推荐方法是什么?
我从服务器返回的数据是JSONArray,我使用SimpleAdapter来创建我的列表。
如果您需要查看任何代码,请告诉我。
提前致谢!
答案 0 :(得分:1)
缓存包含JSON数据的http响应:使用this作为参考。
此外,最好放一个进度对话框(一个旋转不确定时间的对话框),然后在数据准备好显示时将其关闭。
答案 1 :(得分:0)
您必须保存Activity(或Fragment)的状态,并在用户切换回它时重新加载它。 http://developer.android.com/training/basics/activity-lifecycle/recreating.html#SaveState
答案 2 :(得分:0)
我不确定这是不错的答案,但我用这种方法解决了。
它是唯一的设置变量标识符...
是的,回答你这样一个鸡巴问题非常简单 但是很多程序员错过了非常重要的事情 在android中,AsyncTask用于识别相同的变量标识符,即使它存在另一个片段
记住你的想法并尝试这件事