【问题标题】:RecyclerView not recycling if inside nestedScrollView如果在 nestedScrollView 内,RecyclerView 不回收
【发布时间】:2016-08-27 13:48:12
【问题描述】:

我的目标是拥有一个带有多个包含 RecyclerViews 的子 CardViews 的 NestedScrollView。

我当前的 xml 看起来像这样:

    <CardView>
        <RecyclerView/>
    </CardView>

    <CardView>
        <RecyclerView/>
    </CardView>
</NestedScrollView>

如果我在 RecyclerViews 上将 nestedScrollViewEnabled 设置为 false,一切似乎都按预期工作。但是,recyclerviews 中的行没有被回收。调用layoutManager.findFirstVisibleItemPosition() 总是返回0,而layoutManager.findLastVisibleItemPosition() 总是返回列表中最后一项的位置。

有什么建议吗?

【问题讨论】:

  • “没有被回收” - 不明白
  • 好像列表总共有30行,那么30行就膨胀了。它应该增加屏幕上可见的行数。在我的情况下,应该只充气 6 行,并在滚动时“回收”;如果我删除nestedScrollView 就是这种情况
  • 这个问题的运气好吗??
  • 当回收器视图位于另一个可滚动布局中时,它不会按设计回收视图(这很可能是设计的限制,因为 recyclerView 不再位于滚动控制,并且 ScrollView 或 NestedScrollView 不会与 RV 对话以告知其滚动/可见性情况。然后 RV 采用这种行为。我通常建议人们避免在 ScrollViews 中使用 RV,除非它们非常小房车。

标签: android android-recyclerview nestedscrollview


【解决方案1】:

根据您的解释,似乎所有视图都在屏幕外渲染,这就是您获得回收站最后一个项目位置的原因。尝试设置

recyclerview.recycledViewPool.setMaxRecycledViews(int viewType, int max)

将最大值设置为 7 到 10 或更多

我希望这行得通

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    相关资源
    最近更新 更多