Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android OnScrollListener无法正常工作_Android_Kotlin_Android Recyclerview - Fatal编程技术网

Android OnScrollListener无法正常工作

Android OnScrollListener无法正常工作,android,kotlin,android-recyclerview,Android,Kotlin,Android Recyclerview,我试图在我的Android应用程序中添加一个无限滚动条,但是onScroll方法不能正常工作,我想是的 如果我调用addOnScrollListener,它将只被调用一次。但我认为应该在每次滚动RecyclerView时调用它 linearLayoutManager = LinearLayoutManager(this) recyclerViewNeuheiten.layoutManager = linearLayoutManager//LinearLayoutManager(t

我试图在我的Android应用程序中添加一个无限滚动条,但是onScroll方法不能正常工作,我想是的

如果我调用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()}")
                }
            })
      }

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

看起来一切正常您确定要将滚动侦听器设置为正确的recyclerView吗?如果是,那么如果您的recycler视图在滚动时包含项,则应通知onScrolled方法尝试最新版本的recyclerview我发现onScrolled方法中存在一些问题您正在尝试记录currentItem或totalItemCount变量,但您尚未定义它们请尝试使用调试器并将断点添加到在onScrolled方法中编写代码,然后逐行向前,直到方法结束,并检查代码中是否有任何异常谢谢,但我认为最大的问题是每次我滚动时都应该调用onScrolled方法。我的列表中有20个项目,所以我可以滚动两到三次。但是“onScrolled!!!!”在第一次之后永远不会被调用。所以我认为它是有效的。侦听器已连接到右侧的recyclerView。currentItem返回20,totalItemCount也返回20。findFirstVisibleItemPosition返回0,我认为应该在每次滚动后刷新。但是它没有。onScrolled方法应该在你滚动的每个像素中被调用,但是我认为当你第一次调用onScrolled方法时,在你用onScrolled方法编写的代码中出现了某种异常,它导致了一个问题,使得onScrolled方法不再被调用,因为我建议这样做使用Debugger但是如果我注释掉方法中的所有内容,问题仍然存在。所以我现在只有super.onscrold行在onscrold中,但是日志只调用一次。