2017-06-02 116 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時會給出錯誤結果。如果有人能解釋我爲什麼會真的很棒。我無法弄清楚。

相關問題