首页 > 解决方案 > 嵌套 RecyclerView:onBindViewHolder 被无限调用

问题描述

让我们把这变得非常简单。我有两个模型类,Category并且Movie.

data class Category(
    val id: Long,
    val name: String,
    val movies: List<Movie>
)

data class Movie(
    val name : String
)

每个类别都有多部电影。因此,为了呈现这些数据,我使用了嵌套RecyclerView的 s。

当我将设备切换到横向模式时,onBindViewHolderMoviesAdapter嵌套的 recyclerview 的适配器)被无限调用。(注意,相同的代码在纵向模式下工作得很好)

我已将layout_width嵌套 recyclerview 的 item 更改为200dpfrom 120dp,这修复了设备中的无限调用,但在更大的屏幕上,我设置了更高的值来修复它。

我知道这不是一个理想的解决方案,所以我尝试了“wrap_content”,但它也不起作用。(同样的无限通话问题)

因为我不想用代码淹没问题提要,所以我在这里托管了可重现的版本(为了便于阅读,代码最小化)

标签: androidandroid-recyclerviewnestedrecyclerview

解决方案


正如@Pawel在评论中建议的那样,我已经通过将底部约束设置为 main 来解决这个问题。RecyclerView


推荐阅读