2017-06-02 82 views
0

我试图实现一个布局,其中有旋转木马顶部和下面是一个网格布局的图像。该活动有一个RecyclerView,该RecyclerView(MainRV)本身的项目是另一个RecyclerView(ChildRV)。我让MainRV的第一个孩子使用带Horizo​​ntal Scroll的LinearlayoutManager。第二个孩子正在使用GridLayoutManager。 ChildRV呈现实际项目。在嵌套RecyclerView的孩子的onScrollListener没有得到触发

问题是,我想实施MainRV(网格视图)的第二个孩子的延迟加载。但是,当我尝试将onScrollListener添加到子项时,它不会被触发。

我曾尝试:

我试着设置setNestedScrollingEnabled两个MainRV和ChildRV。它仍然没有触发onScrollListener。

我在MainRV上实现了onScrollListener,并试图在滚动状态变为空闲状态后得到第二个孩子。但是,当我调用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的最后一个项目的位置。

任何帮助或建议将不胜感激。

回答

0

当我在ViewHolder上为嵌套的RecyclerView删除“静态”限定符时,此问题得到解决。出于某种原因,重新使用视图来绑定列表项时,在查找lastVisiblItem时会给出错误结果。如果有人能解释我为什么会真的很棒。我无法弄清楚。

相关问题