最近在产品上有一个需求需要实现两个recycleview进行同步滚动,废话不多说直接上代码
java
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);
rlv_stock_bd_data.removeOnScrollListener(scrollListeners[1]);
rlv_stock_bd_data.scrollBy(dx, dy);
rlv_stock_bd_data.addOnScrollListener(scrollListeners[1]);
}
};
scrollListeners[1] = new RecyclerView.OnScrollListener( )
{
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy)
{
super.onScrolled(recyclerView, dx, dy);
rlv_name.removeOnScrollListener(scrollListeners[0]);
rlv_name.scrollBy(dx, dy);
rlv_name.addOnScrollListener(scrollListeners[0]);
}
};
rlv_name.addOnScrollListener(scrollListeners[0]);
rlv_stock_bd_data.addOnScrollListener(scrollListeners[1]);
Kotlin
val scrollListeners: Array<RecyclerView.OnScrollListener?> = arrayOfNulls<RecyclerView.OnScrollListener>(2)
scrollListeners[0] = object :RecyclerView.OnScrollListener(){
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
rlv_stock_bd_data.removeOnScrollListener(scrollListeners[1]!!);
rlv_stock_bd_data.scrollBy(dx, dy);
rlv_stock_bd_data.addOnScrollListener(scrollListeners[1]!!);
}
}
scrollListeners[1] = object :RecyclerView.OnScrollListener(){
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
rlv_name.removeOnScrollListener(scrollListeners[0]!!);
rlv_name.scrollBy(dx, dy);
rlv_name.addOnScrollListener(scrollListeners[0]!!);
}
}
rlv_name.addOnScrollListener(scrollListeners[0]!!);
rlv_stock_bd_data.addOnScrollListener(scrollListeners[1]!!);
网友评论