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