Skip to content

Instantly share code, notes, and snippets.

@danielgomezrico
Created July 15, 2016 04:00
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save danielgomezrico/797b98ef6115a72b14ea7bb736932d0b to your computer and use it in GitHub Desktop.
Save danielgomezrico/797b98ef6115a72b14ea7bb736932d0b to your computer and use it in GitHub Desktop.
Android / Kotlin - Scroll recycler view automatically based on initial items and scroll to bottom on new items (like a chat room)
class ScrollToTopDataObserver(val layoutManager: LinearLayoutManager,
val recyclerView: RecyclerView)
: RecyclerView.AdapterDataObserver() {
override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
super.onItemRangeInserted(positionStart, itemCount)
val lastVisiblePosition = layoutManager.findLastCompletelyVisibleItemPosition()
// If the recycler view is initially being loaded or the user is at the bottom of the
// list, scroll to the bottom of the list to show the newly added message.
if (lastVisiblePosition == -1 || positionStart >= itemCount - 1 && lastVisiblePosition == positionStart - 1) {
recyclerView.scrollToPosition(positionStart)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment