我有一个带有无限滚动的RecyclerView(网络请求)和一个“查询”功能(过滤项目)。一开始,一切都很好,当列表接近结束时,它会触发onScrolled
方法,从而执行网络调用。当我对服务器进行“查询”后“清除”RecyclerView使用的整个集合时,会出现问题。 在这种情况下,不再触发scrollListener
。
如果网络呼叫的结果是增量(分页),我这样做:
public void updateList(List<Candidate> users) {
final int positionStart = list.size() + 1;
list.addAll(users);
adapter.notifyItemRangeInserted(positionStart, list.size());
}
如果它不是增量结果(新数据),我这样做:
public void refreshList(List<Candidate> users) {
if (list.size() > 0) list.clear();
list.addAll(users);
adapter.notifyDataSetChanged();
}
为了完整起见,我使用的无限卷轴的实现是这样的:gist
我不知道清除整个列表是否是问题...我甚至认为我可以在清除集合之前使用removeOnScrollListener()
然后将其添加回来(addOnScrollListener()
)但这不起作用。
我应该采取什么策略?