2

我想像这样实现一个 ConcatAdapter :

在此处输入图像描述

此页面的 recyclerView 包含以下元素:

  • 标题
  • 水平recyclerView(带分页)
  • 标题
  • 垂直recyclerView(无分页)
  • 标题
  • 水平recyclerView(带分页)

但问题是我只能将一个 LayoutManager 设置为我所知道的包含 ConcatAdapter 的 recyclerView。

如何为每个适配器设置不同的布局管理器?或者任何其他使用 CocantAdapter 实现此页面的解决方案?

(为什么是 ConcatAdapter?因为它解决了 nestedRecyclerView 的性能问题,即使我知道 recyclerViewPool 也是如此)

4

2 回答 2

2

不幸的是,这是不可能的。RecyclerView适配器只是为每一行提供和绑定视图的组件。AConcatAdapter没有什么不同,它只是从各个适配器重定向。

如果它确实对布局管理器有任何控制权,那它真的会破坏模块化的全部意义RecyclerView,这也是它最初如此强大的原因。

您可以在此处查看源代码以了解有关其实现方式的更多信息。

于 2021-04-05T02:21:53.637 回答
1

简单的解决方案是在 Activity/Fragment 中创建一个 Viewpool。recyclerview 的 Adapter 有 2 种不同类型的项目,一种是常规的,另一种实际上有一个 recyclerview,其中水平布局为 Adapter。

所以一个 Viewholder 在内部拥有一个 recyclerview 和它自己的 viewholders。

然后,您只需从活动中获取创建的视图池,将其作为共享池分配给所有具有水平滚动的适配器,就是这样:-)

恐怕 Concat 适配器对此没有帮助,所以这将是我的替代解决方案

于 2021-10-06T17:41:19.970 回答