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

Commit 23160f4f authored by Alan Viverette's avatar Alan Viverette Committed by Android (Google) Code Review
Browse files

Merge "Refactor AbsListView position scrollers for better abstraction"

parents 73f3a33b d22db216
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -31633,12 +31633,10 @@ package android.widget {
    method public int getCheckedItemPosition();
    method public android.util.SparseBooleanArray getCheckedItemPositions();
    method public int getChoiceMode();
    method public int getFirstPositionForRow(int);
    method public int getListPaddingBottom();
    method public int getListPaddingLeft();
    method public int getListPaddingRight();
    method public int getListPaddingTop();
    method public int getRowForPosition(int);
    method public android.view.View getSelectedView();
    method public android.graphics.drawable.Drawable getSelector();
    method public java.lang.CharSequence getTextFilter();
+2310 −2282

File changed.

Preview size limit exceeded, changes collapsed.

+33 −7
Original line number Diff line number Diff line
@@ -35,6 +35,8 @@ import android.view.accessibility.AccessibilityNodeInfo;
import android.view.accessibility.AccessibilityNodeInfo.CollectionInfo;
import android.view.accessibility.AccessibilityNodeInfo.CollectionItemInfo;
import android.view.animation.GridLayoutAnimationController;
import android.widget.AbsListView.AbsPositionScroller;
import android.widget.ListView.ListViewPositionScroller;
import android.widget.RemoteViews.RemoteView;

import java.lang.annotation.Retention;
@@ -1027,13 +1029,8 @@ public class GridView extends AbsListView {
    }

    @Override
    public int getRowForPosition(int position) {
        return position / mNumColumns;
    }

    @Override
    public int getFirstPositionForRow(int row) {
        return row * mNumColumns;
    AbsPositionScroller createPositionScroller() {
        return new GridViewPositionScroller();
    }

    @Override
@@ -2361,4 +2358,33 @@ public class GridView extends AbsListView {
                column, 1, row, 1, isHeading, isSelected);
        info.setCollectionItemInfo(itemInfo);
    }

    /**
     * Sub-position scroller that understands the layout of a GridView.
     */
    class GridViewPositionScroller extends AbsSubPositionScroller {
        @Override
        public int getRowForPosition(int position) {
            return position / mNumColumns;
        }

        @Override
        public int getFirstPositionForRow(int row) {
            return row * mNumColumns;
        }

        @Override
        public int getHeightForRow(int row) {
            final int firstRowPosition = row * mNumColumns;
            final int lastRowPosition = Math.min(getCount(), firstRowPosition + mNumColumns);
            int maxHeight = 0;
            for (int i = firstRowPosition; i < lastRowPosition; i++) {
                final int height = getHeightForPosition(i);
                if (height > maxHeight) {
                    maxHeight = height;
                }
            }
            return maxHeight;
        }
    }
}
+22 −7
Original line number Diff line number Diff line
@@ -3775,13 +3775,8 @@ public class ListView extends AbsListView {
    }

    @Override
    public int getRowForPosition(int position) {
        return position;
    }

    @Override
    public int getFirstPositionForRow(int row) {
        return row;
    AbsPositionScroller createPositionScroller() {
        return new ListViewPositionScroller();
    }

    @Override
@@ -3813,4 +3808,24 @@ public class ListView extends AbsListView {
                0, 1, position, 1, isHeading, isSelected);
        info.setCollectionItemInfo(itemInfo);
    }

    /**
     * Sub-position scroller that understands the layout of a ListView.
     */
    class ListViewPositionScroller extends AbsSubPositionScroller {
        @Override
        public int getRowForPosition(int position) {
            return position;
        }

        @Override
        public int getFirstPositionForRow(int row) {
            return row;
        }

        @Override
        public int getHeightForRow(int row) {
            return getHeightForPosition(row);
        }
    }
}