Android OnScrollListener doesnt work correctly

997 Views Asked by At

I am trying to add an infinite scroll to my Android Application but the onScrolled method doesnt work correctly I think so.

It will be called only once if I call the addOnScrollListener. But I think it should be called every time the RecyclerView has been scrolled.

    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()}")
                }
            })
      }
1

There are 1 best solutions below

1
Torben G On

I found the problem. I am using my RecyclerView inside a NestedScrollView. The onScrolled method triggers each scroll without a ScrollView.