【问题标题】:Kotlin - Scroll Detection issue in RecyclerviewKotlin - Recyclerview 中的滚动检测问题
【发布时间】:2020-02-20 09:40:23
【问题描述】:

使用下面的代码检查 RecyclerView 是否到达底部..

表示检查 Recyclerview 的最后一项是否可见..

为此,我在 Recyclerview 中搜索并添加了 Scroll 侦听器。

使用以下代码:

MyRecyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
       override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
           super.onScrollStateChanged(recyclerView, newState)
       }

       override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
           super.onScrolled(recyclerView, dx, dy)
           if (!MyRecyclerView.canScrollVertically(1)) {
               Toast.makeText(mContext, "Last", Toast.LENGTH_LONG).show();
           }
       }
   })

在这里,我正在尝试检查 Recyclerview 是否到达底部。

当我将 recyclerview 滚动到底部时,没有显示 Toast。

但是,当 recyclerview 中的项目第一次绑定时,Toast 突然显示。只有当用户向上滚动到 Recyclerview 的底部时,它才应该烤面包。

可能是什么问题? 请指导。谢谢。

【问题讨论】:

    标签: android kotlin android-recyclerview scroll


    【解决方案1】:

    我认为,使用RecyclerView.LayoutManager api 会更好地满足您的需求。 您可以在RecyclerView.OnScrollListener 中检查LinearLayoutManager::findLastCompletelyVisibleItemPositionfindLastVisibleItemPosition 方法

    【讨论】:

      【解决方案2】:
        rvPlayers?.addOnScrollListener(object : RecyclerView.OnScrollListener() {
              override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
                  super.onScrolled(recyclerView, dx, dy)
                  if (dy > 0) {
                      if (isLastVisable()) {
                         //code here
                      }
                  }
              }
          })
      
       private fun isLastVisable(): Boolean {
          val layoutManager = rvPlayers.layoutManager as LinearLayoutManager
          val pos = layoutManager.findLastCompletelyVisibleItemPosition()
          val numItems = adapter.itemCount
          return (pos >= numItems - 1)
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-13
        • 2018-07-17
        • 1970-01-01
        • 2020-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多