同步滚动多个 RecyclerViews [英] Sync scrolling of multiple RecyclerViews
问题描述
我有一个 ViewPager,每页显示一个片段.该片段包含 RecyclerView 中的项目列表.项目列表的大小始终相同,项目的视图也具有相同的高度.当滚动其中一个 RecyclerViews 时,我希望其他 RecyclerViews 同时滚动相同的距离.我将如何同步 RecyclerViews 的滚动?
I have a ViewPager showing a fragment per page. This fragment holds a list of items inside a RecyclerView. The list of items is always the same size and the views for the items are also of the same height. When scrolling one of the RecyclerViews, I want the other RecyclerViews to scroll at the same time and the same distance. How would I synchronise the scrolling of the RecyclerViews?
推荐答案
这是我的解决方案.代码越少越好...
Here was my solution. The less the code the better...
lvDetail &lvDetail2 是你想要保持同步的 RecyclerViews.
lvDetail & lvDetail2 are the RecyclerViews you want to keep in sync.
final RecyclerView.OnScrollListener[] scrollListeners = new RecyclerView.OnScrollListener[2];
scrollListeners[0] = new RecyclerView.OnScrollListener( )
{
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy)
{
super.onScrolled(recyclerView, dx, dy);
lvDetail2.removeOnScrollListener(scrollListeners[1]);
lvDetail2.scrollBy(dx, dy);
lvDetail2.addOnScrollListener(scrollListeners[1]);
}
};
scrollListeners[1] = new RecyclerView.OnScrollListener( )
{
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy)
{
super.onScrolled(recyclerView, dx, dy);
lvDetail.removeOnScrollListener(scrollListeners[0]);
lvDetail.scrollBy(dx, dy);
lvDetail.addOnScrollListener(scrollListeners[0]);
}
};
lvDetail.addOnScrollListener(scrollListeners[0]);
lvDetail2.addOnScrollListener(scrollListeners[1]);
这篇关于同步滚动多个 RecyclerViews的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!