【发布时间】:2017-09-12 17:31:32
【问题描述】:
我正在尝试创建一个带有分页的RecyclerView,当我尝试向下滚动时,我在显示进度条时遇到了问题,并且已经位于列表的最后。有一个回调 RecyclerView.OnScrollListener 有一个方法 onScrolled 用于处理滚动事件,但是当没有发生实际滚动时它不起作用。
当我尝试从底部向下滚动时,onScrollStateChanged 方法有效,但我的逻辑要求我知道手势的方向(上/下),所以这种方法对我的情况没有帮助。
我目前正在尝试这样做(这显然行不通):
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
fetchDataFromServer();
}
});
编辑:我试图检测onScrolled 中是否达到了结尾,它有点工作,但有时当我尝试从服务器获取数据时我没有收到任何东西,所以在这样的请求之后我仍然在列表的末尾,我想向下滚动以尝试再次更新列表,但我不能,因为 onScrolled 没有被调用。
关于如何解决这个问题的任何想法?我可以使用其他回调吗?
【问题讨论】:
-
查看您的源代码摘录并猜测您正在尝试在 RecyclerView 上实现分页,不是吗?如果是这样,那么当
RecyclerView.Adapter将数据绑定到最后一个视图时,为什么不尝试在onBindViewHolder方法中调用fetchDataFromServer()。 -
是的,这就是我正在做的,我会试试你的解决方案,谢谢
-
这里提到了
onScrolled问题的替代解决方案:link
标签: java android android-recyclerview