我有三个问题
我不包括代码,因为我认为没有必要,因为我没有做任何与普通回收视图有很大不同的事情。
发布于 2016-06-18 15:40:34
在RecyclerView中设置一个新适配器与只调用notifyDataSetChanged()之间有很大的区别,因为当您调用setting时,应用程序将不得不重新创建其所有视图持有者,并重新绑定所需的所有视图。RecyclerView可能就是这样做的,而且做这些工作是不必要的,也是任务处理的。特别是当你每次收到新的数据时都会调用它,这对你的android应用程序来说将是一项艰巨的工作。RecyclerView的美丽之处就在它的名字里。它通过重用(或回收)视图来减少你的应用程序在滚动屏幕时的过载量。即使您有10000个复杂的视图,由于RecyclerView的实现,该应用程序仍然工作得很好。所有的视图都不会在记忆中停留很长时间。
对于第二个问题,您可以检查RecyclerView中的某个位置是否实际可见。如果检查数据集中的最后一项是否可见,则可以发送网络请求以获取更多数据。facebook可能就是这么做的。Quora和Tumblr等其他站点也会这样做,因为当您到达提要的底部时,它通常会重新加载并将新数据添加到数据集中。如果您想要更好的体验,可以将阈值提高到不是最后一个视图,而是在此之前的一些视图,这样就不会像提要停止和重新加载一样。它可以创造无休止的滚动效果。实现取决于您,无论是哪种方式,您都可能需要检查RecyclerView的滚动状态,并明确地调用notifyDataSetChanged(),甚至更好的是调用它的变体。
最后一个问题可能已经被RecyclerView解决了。这取决于您的数据,但是ViewHolders应该以一次内存中没有很多视图的方式循环。
https://stackoverflow.com/questions/37897405
复制相似问题