同步适配器中多个 RecyclerView 的滚动

2024-02-08

我想实现一个水平回收视图垂直内部回收视图.

最终结果应该是这样的:

因此,对于垂直方向上的每个元素回收视图,我还需要一个横向的。有点像学校的时间表,日期在左边,实际时间表在右边,可以水平滚动。

我设法实现了这一点,通过放置回收视图第一个里面回收视图物品。一切都很完美,但所有的水平回收视图s 分别滚动。我想做的就是让所有的水平回收视图s 以同时同步和滚动。我怎样才能实现这个目标?

我设置适配器和水平的方式回收视图在 - 的里面绑定视图持有者垂直适配器的方法是这样的:

scheduleAdapter = new ScheduleAdapter(context, data);
holder.scheduleRecyclerView.setAdapter(scheduleAdapter);
holder.scheduleRecyclerView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false));

每个回收视图应添加以下内容scroll listener.

m_jParentRecyclerViewLayoutManager是其项目具有 recyclerview 的父 RecyclerView。

RecyclerView.OnScrollListener scrollListener = new RecyclerView.OnScrollListener {

    @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);

            scrollAllRecyclerView(recyclerView, dx, dy);
        }

        private void scrollAllRecyclerView(RecyclerView recyclerView, int dx, int dy) {

                // Scroll children RecyclerViews except the recyclerView that is listened.
                for (int i = 0; i < m_jParentRecyclerViewLayoutManager.getChildCount(); i++) {
                    RecyclerView child = (RecyclerView) m_jParentRecyclerViewLayoutManager.getChildAt(i);
                    if (child != recyclerView) {
                        scroll(child, dx, dy);
                    }
                }
            }
        }

        private void scroll(RecyclerView recyclerView, int dx, int dy) {
            recyclerView.removeOnScrollListener(this);
            recyclerView.scrollBy(dx, dy);
            recyclerView.addOnScrollListener(this);
        }

EDIT :在您的父 Recyclerview 适配器中。

 @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            RecyclerView recyclerView = new RecyclerView(mContext);
            .. set layout manager & your adapter .

            if (scrollListener != null) {
                recyclerView.removeOnScrollListener(scrollListener );
                recyclerView.addOnScrollListener(scrollListener );
            }
            return new RecyclerViewViewHolder(recyclerView);
        }

EDIT 2: 有一个表格视图库 https://github.com/evrencoskun/TableViewSample滚动所有子回收器视图同步。 你可以查看源码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

同步适配器中多个 RecyclerView 的滚动 的相关文章

随机推荐