【问题标题】:Horizontal RecyclerView vs ViewPager水平 RecyclerView 与 ViewPager
【发布时间】:2018-05-31 10:31:06
【问题描述】:

我需要显示一个固定长度的项目列表,如下所示:

我应该使用哪种方法? ViewPager 或 Horizo​​ntal RecyclerView。 在这种情况下,ViewPager/Horizo​​ntal RecyclerView 的优势(性能,...)是什么? 提前致谢!

【问题讨论】:

  • RecyclerView vs ViewPager的可能重复
  • 嗨,我看到一些项目使用 ViewPager 来完成这项任务。我想知道最好的方法是什么?为什么?谢谢!
  • 请用您使用的语言更新您的问题和标签? Java、Kotlin、xml?

标签: android android-recyclerview android-viewpager


【解决方案1】:

性能

因此,就性能而言,我很可能总是使用 RecyclerView,因为它会在项目离开屏幕时回收它们,而 ViewPager 不会。

如何

因此,您需要将RecyclerView 的方向设置为水平。

xml:

android:orientation="horizontal"

或 Java(运行时):

LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
myRecyclerView.setLayoutManager(layoutManager);

然后要让RecyclerViewViewPager 一样工作并捕捉到项目,您可以使用LinearSnapHelper

您正在寻找的一切实际上都在一个很好的教程here 中进行了解释。或者,如果您想深入了解并自己查看和学习,这里是教程示例项目的GitHub link

【讨论】:

  • PagerAdapter 文档说:“PagerAdapter 比用于 AdapterViews 的适配器更通用。ViewPager 不直接提供视图回收机制,而是使用回调来指示更新期间采取的步骤。PagerAdapter 可以如果需要,可以实现一种视图回收形式,或者使用更复杂的方法来管理页面视图,例如片段事务,其中每个页面都由其自己的片段表示。” - 这取决于你如何做到这一点
  • ViewPager 会在项目离开屏幕时回收它们。您可以使用viewPager.setOffscreenPageLimit 控制此行为
【解决方案2】:

pskink 和 Anthony Cannon 的答案都很棒。 我们可以这样实现回收机制PagerAdapter:https://stackoverflow.com/a/19020687/5154523

【讨论】:

    猜你喜欢
    • 2017-08-29
    • 1970-01-01
    • 2017-05-02
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-19
    相关资源
    最近更新 更多