android - 在 NestedScrollView 中找不到 RecyclerView 可见项目位置

标签 android android-recyclerview

如果 RecyclerView 位于 NestedScrollView 内并且回收器具有 nestedScrollingEnabled="false" 以便与 RecyclerView 上方的其他 View 平滑滚动,我如何获得 RecyclerView 中第一个/最后一个完全可见的项目。

所有这些功能

int findFirstVisibleItemPosition(); int findFirstCompletelyVisibleItemPosition(); int findLastVisibleItemPosition(); int findLastCompletelyVisibleItemPosition();

要么返回在 recyclerView 中创建的第一个/最后一个项目。

我想找到当前可见的项目,因为我想让 RecyclerView 无限滚动,如果只剩下几个项目要滚动,我应该获取数据。

谢谢

最佳答案

您可以在 nestedscrollview 上添加滚动监听器,并在滚动时检查 recylerview 中放置在 nestedScrollview 中的每个项目是否可见。 下面是例子

  val scrollBounds = Rect()
  nestedScrollView?.getHitRect(scrollBounds)

  nestedScrollView?.addOnScrollListener(object : RecyclerView.OnScrollListener() {
         override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
                super.onScrolled(recyclerView, dx, dy)
                val scrollBounds = Rect()
                if (recyclerView != null && recyclerView.adapter != null
                            && recyclerView.adapter?.itemCount != null
                            && recyclerView.adapter?.itemCount!! > 0) {
                     for (i in 0 until recyclerView.adapter?.itemCount!!) {
                         var view = recyclerView?.findViewHolderForAdapterPosition(i)?.itemView

                         if (view != null) {
                            if (view.getLocalVisibleRect(scrollBounds)) {
                               if (!view.getLocalVisibleRect(scrollBounds)
                                            || scrollBounds.width() < view.getWidth()) {
                                        Logger.debugLog("WidgetScrolled", "BTN APPEAR PARCIALY")
                                    } else {
                                        Logger.debugLog("WidgetScrolled", "BTN APPEAR FULLY!!!")
                                    }
                                } else {
                                    Logger.debugLog("WidgetScrolled", "No")
                                }
                    }
               }
          }
      }
  })

关于android - 在 NestedScrollView 中找不到 RecyclerView 可见项目位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43370430/

相关文章:

java - 如何使用接口(interface)将数据传回适配器

android - 从 firebase 检索 hashmap 以填充 FirebaseRecycler,null HashMap

android - 在 notifyDatasetChanged() 后 RecyclerView 闪烁

android - React Native & Socket.io - 无法在应用程序和服务器之间建立连接

android - 如何将 .apk 和 .db 绑定(bind)在一个 .apk 中,以便用户可以下载和运行应用程序

android - 无法使用 Phonegap Build 在应用程序中注册 PushPlugin?

android - 如何在android native 代码中使用共享内存?

android - RecyclerView 中的项目未按预期对齐

android - AdView 与 RecyclerView 的最后一项重叠

Android:同时 toast 2 次