【发布时间】:2016-01-13 12:05:48
【问题描述】:
在我的RecyclerView 中,我正在实现动态加载,并且需要在用户滚动到底部时加载项目。
动态加载代码:
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
// if lastVisibleItem is the last item in my list add more!
if (mLayoutManager.findLastVisibleItemPosition() == mlist.size() - 1){
mlist.add(randomItem);
mAdapter.notifyItemInserted(mlist.size() - 1);
}
}
});
我从一个空列表开始。我通过首先手动添加一个项目来触发onScrolled 回调进行测试,并且一切正常。我添加的第一个项目触发了对OnScrolled 的第一次调用,更新了 UI,现在我的列表中有两个项目。
对onScrolled 的第一次调用应该链接到onScrolled 的第二次调用。第二个应该链接第三个调用等等。这是因为下面描述的方法行为(注意粗体):
onScrolled:RecyclerView 滚动时调用的回调方法。这将在滚动完成后调用。 如果布局计算后可见项范围发生变化,也会调用此回调。
在第二次通话中,事情变得很奇怪。第三项确实被添加到我的列表中,所以我知道它被触发了,但是我的 UI 没有更新。事情变得更加奇怪了。当我用鼠标CLICK RecyclerView 时,第三个项目会突然出现在我的 UI 中。为什么会这样??
一旦我的第三个项目加载(通过我点击RecyclerView),它将触发另一个对onScrolled 的调用以显示我的第四个项目。其余项目将继续相同的怪异行为。
我在这里误解了什么吗?什么会导致这种行为?我应该如何解决这个问题?太棒了!!
【问题讨论】:
-
尝试添加 super.onScrolled(recyclerView, dx, dy);
-
addind super work 了吗?
-
Ty,但没用。我不认为 super 方法有任何作用。里面没有代码。
标签: android android-recyclerview dynamic-loading