【发布时间】:2019-03-11 13:22:04
【问题描述】:
这是我的函数,用于检测RecyclerView 的结束,稍后将在分页中使用。
private fun setOnScrollListener(categoryRecyclerView: RecyclerView, categoryPresenter: EntertainmentPresenter){
categoryRecyclerView.addOnScrollListener(object: RecyclerView.OnScrollListener(){
override fun onScrolled(recyclerView: RecyclerView?, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
val totalItemCount:Int = categoryLayoutManager.itemCount
val firstVisibleItemPosition:Int = categoryLayoutManager.findFirstVisibleItemPosition()
val visibleItemCount:Int
val lastVisibleItemPosition: Int = categoryLayoutManager.findLastVisibleItemPosition()
visibleItemCount = lastVisibleItemPosition - firstVisibleItemPosition
Log.e("q", lastVisibleItemPosition.toString())
Log.e("q", dy.toString())
if (loading) {
if (totalItemCount > previousTotal) {
loading = false
previousTotal = totalItemCount
}
}
if (!loading && totalItemCount - visibleItemCount <= firstVisibleItemPosition) {
Log.e("q", lastVisibleItemPosition.toString())
loading = true
}
}
})
}
我之前在 RecyclerView 上使用过它,它具有线性 LayoutManger,一切都很棒。
但是当我将它与具有GridLayoutManager 的RecyclerView 一起使用时,事情变得很奇怪。
- 它只实现了一次,当我滚动时不起作用。
- 最后可见项目位置返回
totalItemCount-1。
最后一件事:我在onCreate 中调用了这个函数,我用RecyclerView 尝试了它,它有linear layout manager,一切都很棒
这是我的日志,
2018-10-06 06:10:15.919 11033-11033/com.example.karem.moviesdatabase E/q: 0
2018-10-06 06:10:15.919 11033-11033/com.example.karem.moviesdatabase E/q: 18
它只调用了一次,当我滚动时什么也没有发生。
【问题讨论】:
-
@pskink 我不明白...
标签: android android-recyclerview kotlin pagination endlessscroll