RecyclerView在NestedScrollView中嵌套时无法回收视图

8
我的目标是使用包含RecyclerView的多个子CardView的NestedScrollView。
我的当前XML代码类似于以下内容:

    <CardView>
        <RecyclerView/>
    </CardView>

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

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

不被回收利用 - Reaz Murshed
如果列表总共有30行,则会膨胀30行。它应该根据屏幕上可见的行数进行膨胀。在我的情况下,只应该膨胀6行,并且在我滚动时进行“回收利用”;如果我删除嵌套的ScrollView,这就是情况。 - user1377493
这个问题有什么进展了吗? - hushed_voice
当一个RecyclerView位于另一个可滚动布局内时,它不会按设计回收视图(这很可能是设计的限制,因为RecyclerView不再控制滚动,而ScrollView或NestedScrollView不会与RV交流以告知其滚动/可见性情况。然后RV采用此行为。我通常建议人们避免在ScrollView中使用RV,除非它们是非常小的RV。 - Martin Marconcini
1个回答

0
根据您的解释,似乎所有视图都在屏幕外渲染,这就是为什么您会得到回收站的最后一个项目位置。尝试设置:
recyclerview.recycledViewPool.setMaxRecycledViews(int viewType, int max)

将最大值设置在7到10或更高

希望这能起作用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接