Текущий сценарий
Я использую эту библиотеку https://github.com/kanytu/android-parallax-recyclerview, чтобы добиться эффекта параллакса в RecyclerView. Все идет нормально. Однако я хотел бы получить такой эффект, как Google Newsstand, где заголовок все еще ниже карт.
Проблема
Проблема в том, что RecyclerView (или LinerLayoutManager) отделяет представление заголовка от момента, когда первый элемент списка касается верхней части родительского представления:
Как вы видите момент, когда первый вид карты касается вершины, это момент, когда RecyclerView отсоединяет заголовок.
Я уверен, что нет никакой проблемы с самой логикой, я получаю RecyclerView.findViewHolderForPosition(0) == null
, когда карта достигает вершины. Доказательство того, что заголовок переработан.
Tried Solutions
Я пробовал много вещей вроде:
ViewHolder.setIsRecyclable, используя этот метод, чтобы установить держатель не на повторитель, не оказывает никакого эффекта.
LayoutManager.ignoreView Я пробовал маркировать представление, которое нужно игнорировать при клонировании и повторной утилизации. Результатом стало исключение:
Trying to recycle an ignored view holder. You should first call stopIgnoringView(view) before calling recycle.
setItemViewCacheSize Ничего не делает. Пробовал вызов setItemViewCacheSize(50)
, и он ничего не делает для заголовка.
setMaxRecycledViews Пробовал настройку максимального количества переработанных представлений с помощью viewType = HEADER в 0, и он все еще перерабатывает его.
Заключение
Итак, я сомневаюсь, если есть какой-либо знак для того, чтобы пометить элемент для того, чтобы он не отсоединился, пока я не закажу его (например, если он все еще виден, а затем отсоедините его).
В github также есть проблема: https://github.com/kanytu/android-parallax-recyclerview/issues/7