2017-03-16 36 views
0

我试图显示我从其他web服务(spring),列表(RecyclerView)中获取的数据。数据可以由数千行组成。我应该如何使用这些数据?我应该如何使用我从Web服务器获取的数据,在Android

  • 我应该获取所有数据(或100行)并将它们存储在本地,并从本地读取它们以在列表中查看。如果我使用这些,我应该如何刷新本地数据?
  • 我应该抓取20行并查看它们,当用户向下滚动并到达最后一项时,我获取另外20行?
  • 或者我应该用另一种方式吗? 如果我将所有数据存储为数组,它可能会导致内存不足。有没有教程或关键词来搜索?

twitter或instagram如何使用这些数据?在twitter列表中可以有很多项目,但它不会崩溃,并且twitter可以显示之前,离线下载的项目(这意味着存储数据在本地,不是吗?)

+0

我会建议在您的recyclerView中加载初始数据量(即20行),要么实现自动加载监听器,即当用户到达可见项的底部时获取更多数据,或者您可以使用SwipeRefreshLayout加载更多数据。 –

回答

1

为了使应用程序工作更流畅RecyclerView,使用Endless Scrolling。 一次加载20个项目,在您的服务器API调用上应用分页。

使用OKHttp Response Caching缓存从服务器到本地存储器的每个响应。

+0

无尽的滚动看起来不错,它适用于获取数据和添加到列表。但我应该如何处理旧物品以及如何使用它们?如果我添加我抓取的项目,列出(我使用ArrayList设置recyleview),列表成为biger和biger。我应该清除列表并添加新项目列表?也应该知道用户向上滚动并到达第一个可见的项目?从本地(缓存或某处)添加旧项目列表? – uuur

+0

如果从缓存数据获取结果,则不必担心列表大小,因为缓存数据加载速度更快,资源更少,因此它可以正常工作。 如果您不清除列表中的旧数据,则不需要跟踪用户的滚动位置。 RecyclerView适配器将自行管理它。 –

0

创建一个本地数据库,存储您已经加载到数据库中的所有数据,并添加一个“新鲜”,如时间戳,如果您的数据可能会发生变化。如果您的数据量很大,请考虑首先加载数据的“索引”,然后再加载单个的详细信息。

0

当然,你不应该一次获取所有的数据。阅读关于android中动态数据的分页。 Recycler View还为静态数据使用内置分页,但在动态数据的情况下,即当您从API检索数据时,当用户向下滚动列表以获取下一组数据时,应向您的API发送请求。为了做到这一点,你必须扩展RecyclerView的OnScrollListener并覆盖OnScrolled方法。

相关问题