【问题标题】:Two Vertical RecyclerView scrolling at the same time两个 Vertical RecyclerView 同时滚动
【发布时间】:2022-03-03 17:21:17
【问题描述】:

我有两个RecyclerView,都是垂直方向的,我需要滚动其中一个让第二个滚动,也就是它们的滚动是同步的,我认为可以应用一个LinearLayoutManager这两个 RecyclerView,然后就可以了,但是在这个日志中,会产生错误LinearLayoutManager is already attached to a RecyclerView,所以我不知道怎么回事,帮我想办法,我需要两个独立的 RecyclerView和不同的适配器,但同步滚动,所以不要写GridLayoutManager,谢谢。

xml

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/rv_0"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:clipToPadding="false"
            android:orientation="vertical"/>

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/rv_1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:clipToPadding="false"
            android:orientation="vertical"/>
    </LinearLayout>

鳕鱼

                val RLM_0 = LinearLayoutManager(context)
                rv_0.setHasFixedSize(false)
                rv_0.isNestedScrollingEnabled = false
                rv_0.layoutManager = RLM_0
                adapter_0 = Adapter_0(itemTasks, requireActivity())
                rv_0.adapter = adapter_0


                val RLM_1 = LinearLayoutManager(context)
                rv_1.setHasFixedSize(false)
                rv_1.isNestedScrollingEnabled = false
                rv_1.layoutManager = RLM_1
                adapter_1 = Adapter_1(itemTasks, requireActivity())
                rv_1.adapter = adapter_1

【问题讨论】:

  • 问题是为什么需要两个滚动同步的recyclerview?虽然可能它比您可能需要的复杂得多。您可以只拥有一个具有标准线性布局的回收站视图,并且每个项目(行)包含您 always 想要并排显示的 2 个视图。 (所以不是 GridLayoutManager :-))

标签: android android-recyclerview


【解决方案1】:

解决方案 1:

检查是:Sync scrolling of multiple RecyclerViews

解决方案 2:

还有另一种方法可以做到这一点,这个想法是禁用每个回收器视图的滚动并用滚动视图包围它们。

你可以这样实现它:

binding.recyclerViewOne.setOnTouchListener((v, event) -> true);
binding.recyclerViewTwo.setOnTouchListener((v, event) -> true);

对于布局:

<ScrollView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recycler_view_one"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recycler_view_two"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
    </LinearLayout>
</ScrollView>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多