两个RecyclerViews同步并平滑滚动,但加载速度非常慢

时间:2017-02-03 16:05:18

标签: android android-recyclerview scrollview android-scrollview

我有两个RecyclerViews我想要一起垂直滚动。其中一个也必须能够水平滚动。我为实现这一点所做的是把它们放在ScrollViews中。为了获得理想的效果,我禁用了nestedScrollingEnabled。它们非常顺利地滚动在一起,但我现在有一个不同的问题:RecyclerViews一次加载所有视图,而不是回收视图,这对UI造成严重影响。我每次想要显示我的RV或更改其中的数据集时,都会看到超过100帧的帧跳过。我怎样才能更好地接近这个?

这是XML。请不要介意宽度和高度值,因为这些是以编程方式设置的。

<ScrollView
    android:id="@+id/verticalScrollView"
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintHorizontal_bias="1.0"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/headerConstraintLayout"
    app:layout_constraintVertical_bias="1.0">

    <android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <include
            layout="@layout/first_recyclerview"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintLeft_toLeftOf="parent" />

        <HorizontalScrollView
            android:id="@+id/horizontalScrollView"
            android:layout_width="40dp"
            android:layout_height="0dp"
            android:layout_marginLeft="100dp"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent">

            <include
                layout="@layout/second_recyclerview"
                android:layout_width="100dp"
                android:layout_height="wrap_content" />
        </HorizontalScrollView>

    </android.support.constraint.ConstraintLayout>
</ScrollView>

1 个答案:

答案 0 :(得分:0)

我最终完全摆脱了垂直ScrollView,并使用scrollBy来实现同步滚动。 RecyclerViews现在正确地进行回收,问题已解决!