大家好我刚刚创建了一个演示来使用新的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
}
});
我只得到这两种方法,所以我不知道如何处理这个......
请帮助..
答案 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库,它能够同时处理所有以下功能:
背后的想法是避免为每个项目重新创建自定义适配器,并在一个库中具有更多功能,而不是依赖于仅支持其中1个或3个并且无法合并的不同库。