嵌套的 RecyclerView:onBindViewHolder 被无限调用
Nested RecyclerView : onBindViewHolder getting called infinitely
让我们让这变得非常简单。我有两个型号 类、Category
和 Movie
.
data class Category(
val id: Long,
val name: String,
val movies: List<Movie>
)
data class Movie(
val name : String
)
每个类别都有多部电影。因此,为了呈现这些数据,我使用了嵌套的 RecyclerView
s。
- 问题
当我将设备切换到横向模式时,MoviesAdapter
(嵌套的 recyclerview 的适配器)的 onBindViewHolder
被无限地调用。 (注意,相同的代码在纵向模式下工作得很好)
- 我试过的
我已将嵌套 recyclerview 项目的 layout_width
从 120dp
更改为 200dp
,这修复了设备中的无限调用,但在更大的屏幕上我放了修复它的价值更高。
我知道这不是一个理想的解决方案,所以我尝试了“wrap_content”,但它也没有用。 (同样的无限通话问题)
问题
- 为什么
onBindViewHolder
被无限调用?
- 解决此问题的最佳方法是什么?
因为我不想用代码淹没问题提要,所以我托管了 reproducible version here(为了便于阅读而将代码最小化)
我已经按照评论中建议的 @Pawel 将 底部约束 设置为主要 RecyclerView
来解决此问题。
让我们让这变得非常简单。我有两个型号 类、Category
和 Movie
.
data class Category(
val id: Long,
val name: String,
val movies: List<Movie>
)
data class Movie(
val name : String
)
每个类别都有多部电影。因此,为了呈现这些数据,我使用了嵌套的 RecyclerView
s。
- 问题
当我将设备切换到横向模式时,MoviesAdapter
(嵌套的 recyclerview 的适配器)的 onBindViewHolder
被无限地调用。 (注意,相同的代码在纵向模式下工作得很好)
- 我试过的
我已将嵌套 recyclerview 项目的 layout_width
从 120dp
更改为 200dp
,这修复了设备中的无限调用,但在更大的屏幕上我放了修复它的价值更高。
我知道这不是一个理想的解决方案,所以我尝试了“wrap_content”,但它也没有用。 (同样的无限通话问题)
问题
- 为什么
onBindViewHolder
被无限调用? - 解决此问题的最佳方法是什么?
- 为什么
因为我不想用代码淹没问题提要,所以我托管了 reproducible version here(为了便于阅读而将代码最小化)
我已经按照评论中建议的 @Pawel 将 底部约束 设置为主要 RecyclerView
来解决此问题。