防止RecyclerView中的直接邻居被分离和回收

时间:2015-09-16 11:43:47

标签: android android-recyclerview android-adapter

我正在使用LinearLayoutManager创建水平对齐的RecyclerView。由于我正在绘制项目的边界,因此视图会被回收,因此滚动期间左外侧和右侧邻居的重叠绘图会消失。

有没有办法指示Adapter或LayoutManager始终保持x + 2个视图?

我希望RecyclerView.setItemViewCacheSize( int size )为我解决这个问题,但这些观点似乎仍然存在分歧。

2 个答案:

答案 0 :(得分:0)

您不能使用RecyclerViewLinearLayoutManager的范围之外绘制,并且希望视图在其边界离开RecyclerView的边界后继续绘制。

你应该更好地表达你的问题。您提供的细节很少,并且希望有人帮助您制作不适当的解决方案。

您应该在除了视图0之外的每个视图之前添加RecyclerView.ItemDecoration,例如https://gist.github.com/alexfu/0f464fc3742f134ccd1e

为什么在每个视图之前添加分隔符?因为当我们添加/删除面包屑时,我们不需要在之后有一个分隔符之间来回更改最后一个视图。这样做的工作量更少,性能更好。

答案 1 :(得分:0)

这不回答“保持n + 1个视图附加问题”,但是关于抽出RecyclerView界限的问题

可以像这样获得拉出界限的相同效果。

使RecyclerView与另一个重叠的View TRULY重叠(通过将它们保存在RelativeLayout中的相同空间而不是通过clipChildren = false来实现,这只是一种视觉错觉)。

指定一个标题视图(或页脚,取决于另一个视图是在顶部还是底部),其大小与其他重叠View到RecyclerView的大小相同。

(关于添加标题视图RecyclerView header and footer