【问题标题】:Recalling onBindViewHolder on scrolling up the Recycler view在向上滚动 Recycler 视图时调用 onBindViewHolder
【发布时间】:2017-04-04 19:06:37
【问题描述】:

我的回收站视图中有图像列表,向下滚动回收站视图时,会调用 onBindViewHolder。

当我向上滚动回收器视图时,我想再次调用 onBindViewHolder,以便获取当前查看图像的位置。

如何再次调用onBindViewHolder(向上滚动)?

【问题讨论】:

标签: android android-layout android-recyclerview


【解决方案1】:

这可能不是找出当前查看的图像的最佳方法,但是您可以向回收器视图添加滚动侦听器,并且每当 dy 滚动为负时,您可以调用 adapter.notifyDataSetChanged,因此再次调用 onBindViewHolder

   mFragmentListBinding.movieGrid.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                if (dy < 0) {
                   mAdapter.notifyDataSetChanged();
                }
            }
        });

【讨论】:

  • 它有效,但找出当前查看的图像的最佳方法是什么?
  • 您的布局中同时有多少个视图可见?因为布局管理器也提供这两种方法:layoutManager.findLastVisibleItemPosition() 和 layoutManager.findFirstVisibleItemPosition()
  • 两个视图在我的布局中同时可见。
  • 所以 layoutManager.findLastVisibleItemPostion() 和 layoutManager.findFirstVisibleItemPosition 会给你这两个可见的项目
  • 当这个答案解决了您的问题时,如果您将我的答案标记为解决方案,我会非常高兴:)
猜你喜欢
  • 1970-01-01
  • 2018-12-15
  • 1970-01-01
  • 2017-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-21
  • 1970-01-01
相关资源
最近更新 更多