【问题标题】:Android RecyclerView.OnScrollListener with dynamic loading not updating UI/ weird behavior?Android RecyclerView.OnScrollListener 动态加载不更新 UI/奇怪的行为?
【发布时间】: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


【解决方案1】:
mAdapter.notifyDataSetChanged();

你有没有在你的 onScrollListener 中尝试过?

【讨论】:

    猜你喜欢
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    • 1970-01-01
    相关资源
    最近更新 更多