Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d5408ad4 authored by Alan Viverette's avatar Alan Viverette Committed by Android Git Automerger
Browse files

am 0d9a3691: am 8b9df16f: am 68235e4d: Merge "Prevent NPE when computing...

am 0d9a3691: am 8b9df16f: am 68235e4d: Merge "Prevent NPE when computing FastScroller position with no visible items" into lmp-mr1-dev

* commit '0d9a3691':
  Prevent NPE when computing FastScroller position with no visible items
parents b8089abb 0d9a3691
Loading
Loading
Loading
Loading
+26 −6
Original line number Diff line number Diff line
@@ -1194,17 +1194,37 @@ class FastScroller {
        return MathUtils.constrain((y - offset) / range, 0f, 1f);
    }

    /**
     * Calculates the thumb position based on the visible items.
     *
     * @param firstVisibleItem First visible item, >= 0.
     * @param visibleItemCount Number of visible items, >= 0.
     * @param totalItemCount Total number of items, >= 0.
     * @return
     */
    private float getPosFromItemCount(
            int firstVisibleItem, int visibleItemCount, int totalItemCount) {
        if (mSectionIndexer == null || mListAdapter == null) {
        final SectionIndexer sectionIndexer = mSectionIndexer;
        if (sectionIndexer == null || mListAdapter == null) {
            getSectionsFromIndexer();
        }

        final boolean hasSections = mSectionIndexer != null && mSections != null
        if (visibleItemCount == 0 || totalItemCount == 0) {
            // No items are visible.
            return 0;
        }

        final boolean hasSections = sectionIndexer != null && mSections != null
                && mSections.length > 0;
        if (!hasSections || !mMatchDragPosition) {
            if (visibleItemCount == totalItemCount) {
                // All items are visible.
                return 0;
            } else {
                return (float) firstVisibleItem / (totalItemCount - visibleItemCount);
            }
        }

        // Ignore headers.
        firstVisibleItem -= mHeaderCount;
        if (firstVisibleItem < 0) {
@@ -1222,14 +1242,14 @@ class FastScroller {
        }

        // Number of rows in this section.
        final int section = mSectionIndexer.getSectionForPosition(firstVisibleItem);
        final int sectionPos = mSectionIndexer.getPositionForSection(section);
        final int section = sectionIndexer.getSectionForPosition(firstVisibleItem);
        final int sectionPos = sectionIndexer.getPositionForSection(section);
        final int sectionCount = mSections.length;
        final int positionsInSection;
        if (section < sectionCount - 1) {
            final int nextSectionPos;
            if (section + 1 < sectionCount) {
                nextSectionPos = mSectionIndexer.getPositionForSection(section + 1);
                nextSectionPos = sectionIndexer.getPositionForSection(section + 1);
            } else {
                nextSectionPos = totalItemCount - 1;
            }