首页 > 解决方案 > Android OnScrollListener 无法正常工作

问题描述

我正在尝试向我的 Android 应用程序添加无限滚动,但我认为 onScrolled 方法无法正常工作。

如果我调用 addOnScrollListener,它将只调用一次。但我认为每次滚动 RecyclerView 时都应该调用它。

    linearLayoutManager = LinearLayoutManager(this)
    recyclerViewNeuheiten.layoutManager = linearLayoutManager//LinearLayoutManager(this)
    recyclerViewHistory.layoutManager = LinearLayoutManager(this)
    recyclerViewBestSeller.layoutManager = LinearLayoutManager(this)
    recyclerViewFavorites.layoutManager = LinearLayoutManager(this)


    recyclerViewNeuheiten.adapter = neuheitenAdapter
    recyclerViewHistory.adapter = historyAdapter
    recyclerViewBestSeller.adapter = bestsellerAdapter
    recyclerViewFavorites.adapter = favoriteAdapter

    //setRecyclerViewScrollListener()
    setRecyclerViewScrollListener()


    private fun setRecyclerViewScrollListener() {
            Log.v("scroll", "set listener")

            recyclerViewNeuheiten.addOnScrollListener(object : RecyclerView.OnScrollListener() {
                override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
                    super.onScrollStateChanged(recyclerView, newState)
                    Log.v("scroll", "onScrollStateChanged newState $newState")
                }

                override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
                    Log.v("scroll", "onScrolled !!!!!")

                    super.onScrolled(recyclerView, dx, dy)
                    val currentItem = recyclerView.layoutManager!!.childCount
                    val totalItemCount = recyclerView.layoutManager!!.itemCount
                    Log.v("scroll", "currentItem $currentItem")
                    Log.v("scroll", "totalItemCount $totalItemCount")
                    Log.v("scroll", "lastVisibleItemPosition $lastVisibleItemPosition")
                    Log.v("scroll", "scroll out items ${linearLayoutManager.findFirstVisibleItemPosition()}")
                }
            })
      }

标签: androidkotlinandroid-recyclerview

解决方案


我发现了问题。我在 NestedScrollView 中使用我的 RecyclerView。onScrolled 方法在没有 ScrollView 的情况下触发每个滚动。


推荐阅读