Android
RecyclerView 무한 스크롤
Wook No.1
2022. 5. 10. 15:48
RecyclerView addScrollListener 등록
abstract class EndlessRecyclerViewScrollListener(val layoutManager: LinearLayoutManager, private val startingPageIndex: Int = 0) : RecyclerView.OnScrollListener() {
private val visibleThreshold = 5
private var currentPage = 0
private var previousTotalItemCount = 0
private var loading = true
init {
currentPage = startingPageIndex
}
override fun onScrolled(view: RecyclerView, dx: Int, dy: Int) {
val lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition()
val totalItemCount = layoutManager.itemCount
if (totalItemCount == 0) {
loading = true
}
if (loading && totalItemCount > previousTotalItemCount) {
loading = false
previousTotalItemCount = totalItemCount
}
if (!loading && lastVisibleItemPosition + visibleThreshold > totalItemCount) {
currentPage++
onLoadMore(currentPage, totalItemCount, view)
loading = true
}
}
fun resetState() {
currentPage = startingPageIndex
previousTotalItemCount = 0
loading = true
}
abstract fun onLoadMore(page: Int, totalItemsCount: Int, view: RecyclerView?)
}