1

我想一次滾動多個RecyclerView如何實現該Exp-我有3 RecyclerView在水平和當我滾動第一個RecyclerView然後第二個和第三個也滾動怎麼做 ?我想一次滾動多個recyclerview如何實現那

+0

你應該發佈一些代碼 –

+0

http://android-pratap.blogspot.in/2015/12/horizo​​ntal-recyclerview-in-vertical.html –

+0

這是代碼,其中水平多個滾動視圖在那裏我想滾動所有在滾動一次 –

回答

2

答案很簡單,您必須從一個recycleview獲取滾動反饋並將其傳遞給其他recycleviews。但非常小心。

您需要保持refeler的哪個recyclerview開始給出滾動反饋,以便它不會進入連續循環。

所以創建一個全局變量

private int draggingView = -1; 

添加scrollListener到所有recyclerviews

mRecyclerView1.addOnScrollListener(scrollListener); 
mRecyclerView2.addOnScrollListener(scrollListener); 
mRecyclerView3.addOnScrollListener(scrollListener); 

您的滾動監聽器應該在這個結構。它應該決定哪個回收站正在提供滾動輸入以及哪個正在接收。

private RecyclerView.OnScrollListener scrollListener = new RecyclerView.OnScrollListener() { 
    @Override 
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) { 
     super.onScrollStateChanged(recyclerView, newState); 
     if (mRecyclerView1 == recyclerView && newState == RecyclerView.SCROLL_STATE_DRAGGING) { 
      draggingView = 1; 
     } else if (mRecyclerView2 == recyclerView && newState == RecyclerView.SCROLL_STATE_DRAGGING) { 
      draggingView = 2; 
     } else if (mRecyclerView3 == recyclerView && newState == RecyclerView.SCROLL_STATE_DRAGGING) { 
      draggingView = 3; 
     } 
    } 

    @Override 
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
     super.onScrolled(recyclerView, dx, dy); 
     if (draggingView == 1 && recyclerView == mRecyclerView1) { 
      mRecyclerView2.scrollBy(dx, dy); 
     } else if (draggingView == 2 && recyclerView == mRecyclerView2) { 
      mRecyclerView1.scrollBy(dx, dy); 
     } else if (draggingView == 3 && recyclerView == mRecyclerView3) { 
      mRecyclerView1.scrollBy(dx, dy); 
     } 
    } 
}; 

即是說,您的recyclerview已準備好滾動。如果您滾動一個回收視圖,它將滾動所有其他回收站視圖。

搬家不是問題,停下來是。如果用戶想要列表,同時如果他停止了其他列表,那麼該列表將只會停止,因此您還需要覆蓋該列表。我希望這個解釋和代碼能夠解決你的問題。