From dd76a74e1c44d0a0bc07c0c62ee76f99b10f24df Mon Sep 17 00:00:00 2001 From: Viktor De Pasquale Date: Sun, 16 Jun 2019 09:00:46 +0200 Subject: [PATCH] Fixed fast scroll button crashing while scrolling to undefined position --- .../topjohnwu/magisk/utils/DataBindingAdapters.kt | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/topjohnwu/magisk/utils/DataBindingAdapters.kt b/app/src/main/java/com/topjohnwu/magisk/utils/DataBindingAdapters.kt index 5c102442f..04eb62bba 100644 --- a/app/src/main/java/com/topjohnwu/magisk/utils/DataBindingAdapters.kt +++ b/app/src/main/java/com/topjohnwu/magisk/utils/DataBindingAdapters.kt @@ -186,9 +186,17 @@ fun setHidden(view: FloatingActionButton, hide: Boolean) { } @BindingAdapter("scrollPosition", "scrollPositionSmooth", requireAll = false) -fun setScrollPosition(view: RecyclerView, position: Int, smoothScroll: Boolean) = when { - smoothScroll -> view.smoothScrollToPosition(position) - else -> view.scrollToPosition(position) +fun setScrollPosition(view: RecyclerView, position: Int, smoothScroll: Boolean) { + val adapterItemCount = view.adapter?.itemCount ?: -1 + if (position !in 0 until adapterItemCount) { + // the position is not in adapter bounds, adapter will throw exception for invalid positions + return + } + + when { + smoothScroll -> view.smoothScrollToPosition(position) + else -> view.scrollToPosition(position) + } } @BindingAdapter("recyclerScrollEvent")