一屏实现两个recyclerview
Impelement two recyclerview in one screen
我如何实现这种 UI,我们有两个 recyclerView。一个水平滚动,第二个垂直滚动。当第二个滚动时,第一个也一起滚动到顶部。
我尝试使用 NestedScrollView 来实现,但我不得不让第二个 recyclerView 高度包裹内容,这导致 recyclerView 无法回收。
我尝试的第二种方法是使用一个 recyclerView。并添加水平回收视图作为 header。问题是在导航时保存 header recyclerview 滚动状态。在 header recyclerView 中加载下一页(第 3 页)时发生崩溃。
问题是:这种ui有没有最优解?
在某些情况下,像这样,你不必使用 2 RecyclerView
并且你还必须避免在 ScrollView
中使用 RecyclerView
。 而不是这个,你必须使用 one vertical RecyclerView
和 multitype 视图 Adapter
。
这样,您将拥有 2 个不同的 ViewHolder
,其中一个是水平的 recyclerView(您的顶级项目),另一个是您的其他项目。
要学习多类型适配器,您可以看到:
How to create RecyclerView with multiple view types
对于垂直 RecyclerView 内的水平 recyclerView,您可以看到:
https://medium.com/@ashishkudale/android-list-inside-list-using-recyclerview-73cff2c4ea95
你必须结合这两个。
我无法理解“header”的意思,您说“将水平回收视图添加为 header”,但如果您按照我说的做了,问题是内部水平的状态recyclerView,我认为你可能在垂直回收器视图的 OnBind() 方法中调用了水平 RecyclerView 的 setAdapter
方法,这是我在许多教程中看到的常见错误。
如果你犯了这个错误,请尝试在其 viewHolder
的构造函数中调用内部 recyclerView 的 setAdapter,并在 VerticalRecylerView
的 onBind() 方法中使用 yourHorizontalAdapter.notifyDataSetChanged()
更新列表,
如果不是这种情况并且您的 recyclerView 完全被破坏,请参阅此 link :How to save RecyclerView's scroll position using RecyclerView.State?
我如何实现这种 UI,我们有两个 recyclerView。一个水平滚动,第二个垂直滚动。当第二个滚动时,第一个也一起滚动到顶部。
我尝试使用 NestedScrollView 来实现,但我不得不让第二个 recyclerView 高度包裹内容,这导致 recyclerView 无法回收。
我尝试的第二种方法是使用一个 recyclerView。并添加水平回收视图作为 header。问题是在导航时保存 header recyclerview 滚动状态。在 header recyclerView 中加载下一页(第 3 页)时发生崩溃。
问题是:这种ui有没有最优解?
在某些情况下,像这样,你不必使用 2 RecyclerView
并且你还必须避免在 ScrollView
中使用 RecyclerView
。 而不是这个,你必须使用 one vertical RecyclerView
和 multitype 视图 Adapter
。
这样,您将拥有 2 个不同的 ViewHolder
,其中一个是水平的 recyclerView(您的顶级项目),另一个是您的其他项目。
要学习多类型适配器,您可以看到:
How to create RecyclerView with multiple view types
对于垂直 RecyclerView 内的水平 recyclerView,您可以看到: https://medium.com/@ashishkudale/android-list-inside-list-using-recyclerview-73cff2c4ea95
你必须结合这两个。
我无法理解“header”的意思,您说“将水平回收视图添加为 header”,但如果您按照我说的做了,问题是内部水平的状态recyclerView,我认为你可能在垂直回收器视图的 OnBind() 方法中调用了水平 RecyclerView 的 setAdapter
方法,这是我在许多教程中看到的常见错误。
如果你犯了这个错误,请尝试在其 viewHolder
的构造函数中调用内部 recyclerView 的 setAdapter,并在 VerticalRecylerView
的 onBind() 方法中使用 yourHorizontalAdapter.notifyDataSetChanged()
更新列表,
如果不是这种情况并且您的 recyclerView 完全被破坏,请参阅此 link :How to save RecyclerView's scroll position using RecyclerView.State?