实现两个recycleview同步滚动

2021-06-23  本文已影响0人  雨田Android开发

最近在产品上有一个需求需要实现两个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]!!);
上一篇 下一篇

猜你喜欢

热点阅读