我正在处理此视图,顶部是标题,下面是搜索栏,然后是嵌套的滚动视图,其中包含线性布局,该布局还包含2个回收站视图。布局xml文件可以在下面找到。
我面临的问题是,当我通过搜索栏过滤回收站视图中的项目时,呈现过滤结果时会有明显的滞后。我已将问题定位到嵌套滚动视图,因为当我摆脱这个问题(只有2个回收站视图)时,滞后的问题就完全消失了。但是,当然,随着嵌套滚动视图的消失,我不再能够同时滚动2个回收站视图。
现在,每个回收者视图都有2个适配器,每个适配器都实现了Filterable接口,该接口可处理过滤逻辑。另外,我有一个视图模型类和一个片段类。
如果不能轻松解决此问题,那么我认为最后的解决方法是摆脱嵌套的滚动视图,并只拥有一个包含两个列表的回收器视图,并将适配器的数量减少到一个。这会使逻辑变得非常复杂,因此我希望有另一种解决方法。
请让我知道你们的想法。任何输入表示赞赏。
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/invite_list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true">
<include
android:id="@+id/header"
layout="@layout/component_bars_navigation_nav_sub"
android:layout_width="match_parent"
android:layout_height="@dimen/XXXL"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<include
android:id="@+id/search_bar"
layout="@layout/layout_component_bars_row_search"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/add_friend_header" />
<androidx.core.widget.NestedScrollView
android:id="@+id/invite_list_scroll_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:overScrollMode="always"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/search_bar">
<LinearLayout
android:id="@+id/invite_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="@dimen/XXXXL"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="parent">
<include
android:id="@+id/label_1"
layout="@layout/layout_component_bars_row_label"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="false"
android:paddingBottom="@dimen/S"
android:visibility="visible"
tools:itemCount="3"
tools:layout_editor_absoluteX="-50dp"
tools:listitem="@layout/components_1_item"
tools:visibility="visible" />
<include
android:id="@+id/label_2"
layout="@layout/layout_component_bars_row_label"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="false"
android:paddingBottom="@dimen/S"
android:visibility="visible"
tools:itemCount="2"
tools:layout_editor_absoluteX="-50dp"
tools:listitem="@layout/components_2_item"
tools:visibility="visible" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>
答案 0 :(得分:0)
最后,我找到了解决此问题的解决方案。我没有做多个回收站视图,而是将它们组合成具有多种视图类型的视图。
如果人们仍然感到困惑,以下链接可能会有所帮助,因为他们帮助了我:)
Android RecyclerView with multiple view type (multiple view holder)