Вот моя функция, которая обнаруживает завершение 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
, и все было замечательно.
Но когда я использовал его с RecyclerView
, который имеет GridLayoutManager
, все стало странно.
- Это реализовано только один раз и не работает, когда я прокручиваю.
- Последнее видимое возвращение позиции элемента
totalItemCount-1
.
Последнее: это я вызываю эту функцию в onCreate
, и я попробовал ее с RecyclerView
, которая имеет linear layout manager
, и все было замечательно
Вот мой logcat,
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
Он вызывается только один раз, и при прокрутке ничего не происходит.