Я реализовал RecyclerView с липкими заголовками и сделал это через ItemDecoration. Он работает, как и ожидалось, в случае автономного представления переработчика.
<LinearLayout ...>
<androidx.recyclerview.widget.RecyclerView .../>
<androidx.recyclerview.widget.RecyclerView ... /> // ItemDecoration is supposed to be here and it works excellent
</LinearLayout>
Но у меня есть два списка, и мне нужно использовать NestedScrollView
<androidx.core.widget.NestedScrollView ...>
<LinearLayout ...>
<androidx.recyclerview.widget.RecyclerView .../>
<androidx.recyclerview.widget.RecyclerView ... /> // It doesn't work here
</LinearLayout>
</androidx.core.widget.NestedScrollView ...>
В этом случае ItemDecoration не работа.
Я обнаружил следующую информацию:
onDrawOver не вызывается при прокрутке, потому что RecyclerView.draw () также не вызывается.
Все элементы создаются одновременно (поэтому Adapter создает держатели видов для всех элементов данных). Это плохо, но это не моя главная проблема.
Я пытался вызвать перерисовку повторного просмотра при прокрутке, но она не работает
Сделать у вас есть какие-либо советы, как это исправить?
UPD xml файл:
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:scrollbars="none">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/black_background_color"
android:focusableInTouchMode="true"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/menuNewsList"
android:layout_width="match_parent"
android:layout_height="170dp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/listMenu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
Инициализация кода:
listMenu.apply {
adapter = dishAdapter
isNestedScrollingEnabled = false
}
listMenu.addItemDecoration(HeaderItemDecoration(listMenu, isHeader = isHeader()))
HeaderItemDecoration был скопирован оттуда Как я могу сделать липкие заголовки в RecyclerView? (Без внешней библиотеки)