RecyclerView子,如何连接2个或更多视图

时间:2016-01-19 14:17:09

标签: android android-recyclerview

您好我有RecyclerView,我使用HorizontalScrollView in children of the RecyclerView`。当我滚动一个时,我需要滚动所有这些。任何人都可以告诉我如何做到这一点,谢谢!

1 个答案:

答案 0 :(得分:0)

我将假设你正在做类似于我所做的事情,你有某种表格视图,而HorizontalScrollView的宽度都相同。

我就这样做了:

首先,我对HorizontalScrollView进行了自定义,以便在浏览视图时获取事件通知:

public class HorizontalScrollView extends android.widget.HorizontalScrollView {

    private OnScrollListener mListener;

    public HorizontalScrollView(Context context) {
        super(context);
    }

    public HorizontalScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public HorizontalScrollView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public void setOnScrollListener(OnScrollListener listener) {
        mListener = listener;
    }

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        super.onScrollChanged(l, t, oldl, oldt);
        if (mListener != null) {
            mListener.onScrollChanged(this, l);
        }
    }

    public interface OnScrollListener {
        public void onScrollChanged(View view, int scrollX);
    }
}

然后当我创建ViewHolder时,我添加了一个将所有视图设置为相同scrollX的侦听器:

    view.setOnScrollListener(new OnScrollListener() {

        @Override
        public void onScrollChanged(View scrollView, int scrollX) {

            for (int i = 0; i < recyclerView.getChildCount(); i++) {
                View child = recyclerView.getChildAt(i);
                if (child instanceof HorizontalScrollView && child != scrollView) {
                    HorizontalScrollView scrollView2 = (HorizontalScrollView) child;
                    if (scrollView2.getScrollX() != scrollX) {
                        scrollView2.setScrollX(scrollX);
                    }
                }
            }
        }
    });

此代码仅供参考;不要指望复制/粘贴它并让它工作。

我假设您的ViewHolder可以获得对您RecyclerView的引用,以访问所有当前列表项。

这段代码存在一些问题,当你刷一个视图然后刷掉另一个视图时,一切仍然从第一次滑动移动,事情可能会失去同步。但这是一个让你从积极的方向着手的基本想法。