Android липкий заголовок RecyclerView / заголовок раздела RecyclerView

Привет, Все, что я только что создал демо для работы с новым виджетами android L RecyclerView. Я также реализовал Pull-To-Refresh с помощью SwipeRefreshLayout, но теперь для меня проблема в том, как я могу реализовать липкий заголовок здесь, потому что когда я пытаюсь установить

mRecyclerView.setOnScrollListener(new OnScrollListener() { @Override public void onScrolled(int arg0, int arg1) { } @Override public void onScrollStateChanged(int arg0) { // TODO Auto-generated method stub } }); 

Я получаю только эти 2 метода, поэтому не знаю, как я могу справиться с этим …

Пожалуйста помоги..

Solutions Collecting From Web of "Android липкий заголовок RecyclerView / заголовок раздела RecyclerView"

Поскольку предыдущие ответы не предоставляют надежного решения, я предлагаю свою библиотеку FlexibleAdapter для RecyclerView, которая может обрабатывать сразу все следующие функции:

  • Важная функциональность для заголовков с разделами, работает со всеми 3 LayoutManagers и с ViewPager.
  • Режимы выбора.
  • Несколько типов элементов с автоматическим отображением.
  • Предопределенные ViewHolders.
  • Расширяемые элементы с когерентностью выбора.
  • Draggable и Swipe-To-Dismiss.
  • Анимированный асинхронный фильтр с текстом со спасителем.
  • Прокрутка анимаций.
  • EndlessScroll с привязкой адаптера.
  • Помощник UndoHelper & ActionMode.
  • FastScroller.
  • …и более.

Идея заключается в том, чтобы избежать создания с нуля снова настраиваемого адаптера для каждого проекта и иметь больше функциональных возможностей в одной библиотеке вместо того, чтобы полагаться на разные библиотеки, которые поддерживают только 1 или 3 из них и которые вы не можете объединить.

public void onScrolled(int dx, int dy)

Это два аргумента, которые вы получаете onScrolled , это означает, что количество пикселей, которые RecyclerView изменил на оси X и Y …, вероятно, все, что вы хотите сделать, это:

 @Override public void onScrolled(int dx, int dy) { if(dx < 0) // going up showSitckyHeader(); } 

Вы можете, возможно, еще больше улучшить эту реализацию, добавив минимальную сумму прокрутки. Что-то вроде:

 int totalScrolled = 0; @Override public void onScrolled(int dx, int dy) { totalScrolled += dx; if(totalScrolled < MIN_SCROLL) showSitckyHeader(); if(dx > 0) totalScrolled = 0; } @Override public void onScrollStateChanged(int newState) { if(newState == SCROLL_STATE_IDLE || newState = SCROLL_STATE_SETTLING) totalScrolled = 0; } 

Или даже пойти дальше и реализовать скорость, подсчитывая время, но эти типы реализации более сложны, и вы должны сами их протестировать.