在嵌套的 RecyclerView child 中,onScrollListener 没有被触发

In nested RecyclerView child's onScrollListener not getting trigerred

我试图实现一种布局,其中顶部有旋转木马,下面是图像的网格布局。 activity 有一个 RecyclerView,而 RecyclerView(MainRV) 本身的项目是另一个 RecyclerView(ChildRV)。我让 MainRV 的第一个 child 使用带水平滚动的 LinearlayoutManager。第二个 child 使用 GridLayoutManager。 ChildRV 呈现实际项目。

问题是,我想为 MainRV(网格视图)的第二个 child 实现延迟加载。但是,当我尝试将 onScrollListener 添加到 child 时,它没有被触发。

我试过的:

我尝试在 MainRV 和 ChildRV 上设置 setNestedScrollingEnabled。仍然没有触发onScrollListener。

我在 MainRV 上实现了 onScrollListener 并试图在滚动状态变为 IDLE 后获取第二个 child。但是当我在 gridLayoutManager 上调用 findLastVisibleItemPosition() 时,它给出了最后一个项目的位置,即使我在网格视图的顶部。下面是 onScrollListener

的片段
mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);
        if(newState == RecyclerView.SCROLL_STATE_IDLE) {

            RecyclerView recyclerView1 = (RecyclerView) recyclerView.getChildAt(1);
            GridLayoutManager gridLayoutManager = (GridLayoutManager) recyclerView1.getLayoutManager();

            Log.e("Scrolled activity pos", "" + gridLayoutManager.findLastVisibleItemPosition());
        }
    }

    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);
    }
});

以上代码的输出给出了最后一项的位置,在我的例子中是 49。

如有任何帮助或建议,我们将不胜感激。

当我删除嵌套 RecyclerView 的 ViewHolder 上的 "static" 限定符时,这里的问题得到解决。出于某种原因,在查找 lastVisiblItem 时,重用视图来绑定列表项会给出错误的结果。如果有人能解释为什么那么我会非常感激。我想不通。