【问题标题】:Circular RecyclerView循环回收器查看
【发布时间】:2015-04-14 01:37:19
【问题描述】:

假设我们有以下一组项目视图:

View1 -> View2 -> View3 -> ... -> View(n-1) -> View(n)

在经典的 RecyclerView 上,View1 将位于第一个位置,View(n) 位于最后。现在我想制作那个圆形,所以在最后一个位置之后我们再次滚动到第一个位置:

View1 -> View2 -> View3 -> ... -> View(n-1) -> View(n) -> View1 -> View2 -> ...

这乍一看似乎很简单,但我不确定如何在 View(n) 之后完成“重置”。任何建议都会非常有帮助。谢谢。

【问题讨论】:

    标签: android android-recyclerview


    【解决方案1】:

    我自己没有这样做,但我认为这种方法会奏效。

    首先,您需要知道哪些视图是附加的/可见的。层次结构更改侦听器可以执行此操作,或者填充您的项目视图的自定义视图。无论如何,当您接近适配器的尽头时,您只需开始铺设轨道;从适配器的另一端删除项目并将它们添加到此端,在执行此操作时调用 notifyRangeInserted 和 notifyRangeRemoved。删除和插入的视图应该在显示区域之外,因此不会发生动画,但对于 GridLayoutManager,您需要以列数的倍数工作。

    当没有足够的内容来填充回收站视图时,您将不得不考虑该怎么做。当它滚动时,您可能还希望在回收器视图之前至少有几个项目,您可能必须添加重复项才能做到这一点。我希望一次至少向前移动一屏内容。

    我想滚动指示器会出错。自定义布局管理器可以提供非常好的指标。

    【讨论】:

      【解决方案2】:

      ListView请参考this solution。你可以写一个RecyclerView.Adapter,其中包含Integer.MAX_VALUE 项目。唯一的区别是 RecyclerView 不再有setSelectionFromTop 方法。相反,您应该调用

      recyclerView.getLayoutManager().scrollToPosition(recyclerAdapter.MIDDLE);
      

      为了首先将recyclerView滚动到中间。

      【讨论】:

        猜你喜欢
        • 2018-05-07
        • 1970-01-01
        • 1970-01-01
        • 2020-11-26
        • 1970-01-01
        • 1970-01-01
        • 2013-11-14
        • 2018-06-20
        • 1970-01-01
        相关资源
        最近更新 更多