在我的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不会更新。事情变得更加奇怪。当我用鼠标点击 RecyclerView
时,第三项会突然显示在我的界面中。为什么???
我的第三个项目加载后(我点击RecyclerView
)会触发另一个onScrolled
来显示我的第四个项目。对于其余项目,将继续相同的奇怪行为。
我在这里误解了什么吗?什么可以导致这种行为?我该怎么解决这个问题? TY !!
答案 0 :(得分:0)
mAdapter.notifyDataSetChanged();
你是否在onScrollListener中尝试过这个?