Android RecyclerView.OnScrollListener动态加载不更新UI /怪异行为?

时间:2016-01-13 12:05:48

标签: android android-recyclerview dynamic-loading

在我的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 !!

1 个答案:

答案 0 :(得分:0)

mAdapter.notifyDataSetChanged();

你是否在onScrollListener中尝试过这个?