美文网首页
实现两个recycleview同步滚动

实现两个recycleview同步滚动

作者: 雨田Android开发 | 来源:发表于2021-06-23 09:50 被阅读0次

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

相关文章

网友评论

      本文标题:实现两个recycleview同步滚动

      本文链接:https://www.haomeiwen.com/subject/joovyltx.html