Android粘贴标题RecyclerView / Section Header RecyclerView

时间:2014-07-21 06:58:51

标签: android android-recyclerview

大家好我刚刚创建了一个演示来使用新的Android L小部件RecyclerView。我也使用SwipeRefreshLayout实现了Pull-To-Refresh,但现在我的问题是如何在这里实现粘性标头,因为当我尝试设置

mRecyclerView.setOnScrollListener(new OnScrollListener() {

    @Override
    public void onScrolled(int arg0, int arg1) {

    }

    @Override
    public void onScrollStateChanged(int arg0) {
        // TODO Auto-generated method stub

    }
});

我只得到这两种方法,所以我不知道如何处理这个......

请帮助..

2 个答案:

答案 0 :(得分:5)

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;
}

甚至更进一步实现速度,计算时间,但这些类型的实现更棘手,你必须自己测试。

答案 1 :(得分:5)

由于之前的答案没有提供可靠的解决方案,我建议我的RecyclerView FlexibleAdapter库,它能够同时处理所有以下功能:

  • 带有Sections的标题的粘性功能,适用于所有3个LayoutManagers和ViewPager。
  • 选择模式。
  • 具有自动映射的多个项目类型。
  • 预定义的ViewHolders。
  • 具有选择一致性的可扩展项目。
  • 可拖动和轻扫以解除。
  • 带有spannable text的动画异步过滤器。
  • 滚动动画。
  • EndlessScroll with Adapter binding。
  • UndoHelper&amp; ActionMode Helper。
  • FastScroller。
  • ......等等。

背后的想法是避免为每个项目重新创建自定义适配器,并在一个库中具有更多功能,而不是依赖于仅支持其中1个或3个并且无法合并的不同库。