ConcatAdapter中的多个LayoutManager

6

我想要实现一个类似于这张图片的ConcatAdapter:

enter image description here

这个页面的recyclerView包含以下元素:
  • 标题
  • 水平recyclerView(带分页)
  • 标题
  • 垂直recyclerView(无分页)
  • 标题
  • 水平recyclerView(带分页)
但问题是,我只能为持有ConcatAdapter的recyclerView设置一个LayoutManager。
如何为每个适配器设置不同的layoutmanager? 或者使用其他方法来实现此页面与CocantAdapter?
(为什么要使用ConcatAdapter?因为它解决了嵌套RecyclerView的性能问题,即使使用recyclerViewPool也是如此。)

1
Concat适配器非常原始,它只是将项目位置重新映射到包含的适配器中。您不能在此情况下使用它。 - Pawel
2个回答

3
很遗憾,这是不可能的。一个RecyclerView适配器只是为每一行提供和绑定视图的组件。ConcatAdapter也不例外,它只是从各个单独的适配器进行重定向。
如果它对布局管理器有任何控制权,那么它将真正击败RecyclerView的模块化点,这也是使其如此强大的原因之一。
您可以在这里查看源代码,了解有关其实现方式的更多信息。

谢谢,@henry。 那么解决方案是什么?我该如何实现它以使其流畅且高效? - DrMorteza
2
我从未遇到过水平RecyclerView嵌套时的性能问题。很遗憾,我不知道有什么解决方案可以让你的水平布局共享一个视图池! - Henry Twist

1
简单的解决方案是在Activity/Fragment中创建一个Viewpool。 RecyclerView的适配器有两种不同类型的项,一种是常规项,另一种实际上有一个水平布局作为其适配器的RecyclerView。 因此,一个ViewHolder包含一个内部的RecyclerView和它自己的ViewHolders。 然后,您只需从Activity中获取创建的Viewpool,并将其分配为所有具有水平滚动的适配器的共享池即可,就这样 :-) Concat Adapter对此没有帮助,所以这是我的替代方案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接