在DataSet更改后未触发onScrolled RecyclerView

时间:2016-07-05 21:57:10

标签: android android-recyclerview recycler-adapter

我有一个带有无限滚动的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())但这不起作用。

我应该采取什么策略?

0 个答案:

没有答案