[CymChad/BaseRecyclerViewAdapterHelper]onLoadMoreRequested循环执行问题

2024-08-08 6 views
5

经过多次测试发现 1).在onLoadMoreRequested方法执行之后,列表add了几项,但如果列表所有项都在可视范围内,onLoadMoreRequested会自动触发,直到列表有一些项不在可视范围内为止。 2).在onLoadMoreRequested方法执行之后,如果加载成功了,只是数据不返回,也就是列表add了0项,调用loadMoreComplete会造成onLoadMoreRequested无限循环下去。

回答

5

哪个版本?代码是如何调用的?

2

2017年5月15日 下午8:39拉下来的,代码调用,我是在官方demo的PullToRefreshUseActivity上,把PAGE_SIZE改为1,然后在onLoadMoreRequested()里面直接执行 pullToRefreshAdapter.loadMoreComplete(); 就会无限循环

8

换最新版本试试

6

11111111111111111111

0

新版本还是一样,在onLoadMoreRequested()里面直接执行 loadMoreComplete() 就会无限循环

6

有没有什么方法,可以隐藏加载更多的视图,下次滑倒底部的时候又可以显示出来加载更多。

4

数据返回0项,按理说应该调用loadMoreEnd

8

loadMoreEnd调用后,下次滑到底部就不能加载更多了;有时候服务器可能出现某些问题会造成数据返回0项,在加载更多的时候数据可能又会返回多项,所以调用loadMoreEnd不太科学吧?

0

可以看看这个方法enableLoadMoreEndClick

1

服务器问题为什么要让客户端解决?

6

你都不知道你什么的数据是对的,那么就没有判断条件关闭。所以导致无限加载。如果你提前关闭了又会导致无法加载下一页。

1

能提供一个方法,在加载更多完成之后,可以关闭加载更多的视图,而不影响下一次滑到底部加载更多的事件就好操作了。

1

加载机制是滑到最后一项,调用callback,loadMoreComplete()是告诉adapter还有下一页,所以如果你add了0项它本身还在看到了最后一项,然后你告诉它还有下一页,所以导致一直调用callback。

2

我建议你可以这样,先调用loadMoreEnd,然后写个定时器,开启上拉。

2

如果服务器返回数据为0,没数据了你可以loadMoreEnd关闭加载更多,但是又想刷新加载更多你可以看下enableLoadMoreEndClick