From 7054afec29230d0e979a5cd20d278f2162567110 Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 26 Jan 2020 18:53:49 +0100 Subject: [PATCH] Fixed fast scroll performance --- .../recyclerview/widget/FastScrollerEx.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/androidx/recyclerview/widget/FastScrollerEx.java b/app/src/main/java/androidx/recyclerview/widget/FastScrollerEx.java index 88154e29be..4bcda2358e 100644 --- a/app/src/main/java/androidx/recyclerview/widget/FastScrollerEx.java +++ b/app/src/main/java/androidx/recyclerview/widget/FastScrollerEx.java @@ -449,12 +449,14 @@ public class FastScrollerEx extends RecyclerView.ItemDecoration implements Recyc if (Math.abs(mVerticalThumbCenterY - y) < 2) { return; } - int scrollingBy = scrollTo(mVerticalDragY, y, scrollbarRange, - mRecyclerView.computeVerticalScrollRange(), - mRecyclerView.computeVerticalScrollOffset(), mRecyclerViewHeight); - if (scrollingBy != 0) { - mRecyclerView.scrollBy(0, scrollingBy); - } + + int scrollbarLength = scrollbarRange[1] - scrollbarRange[0]; + float percentage = (scrollbarLength == 0 ? 0 : y / (float) scrollbarLength); + androidx.recyclerview.widget.RecyclerView.Adapter adapter = mRecyclerView.getAdapter(); + int count = (adapter == null ? 0 : adapter.getItemCount()); + int pos = Math.round(count * percentage); + mRecyclerView.scrollToPosition(pos); + mVerticalDragY = y; }