Android OnScrollListener не работает правильно - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь добавить бесконечную прокрутку в мое 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()}")
                }
            })
      }

1 Ответ

0 голосов
/ 15 января 2020

Я нашел проблему. Я использую свой RecyclerView внутри NestedScrollView. Метод onScrolled запускает каждую прокрутку без ScrollView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...