9

大家好,我刚刚创建了一个演示来使用新的 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

    }
});

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

请帮忙..

4

2 回答 2

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

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

于 2014-07-21T10:31:01.403 回答
5

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

  • 带有 Sections 的标题的粘性功能,适用于所有 3 个 LayoutManager 和 ViewPager。
  • 选择模式。
  • 具有自动映射的多种项目类型。
  • 预定义的 ViewHolders。
  • 具有选择一致性的可扩展项目。
  • 可拖动和滑动即可关闭。
  • 具有可跨文本的动画异步过滤器。
  • 滚动动画。
  • EndlessScroll 与适配器绑定。
  • UndoHelper & ActionMode 助手。
  • 快速滚动器。
  • ...和更多。

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

于 2016-06-06T23:30:28.733 回答