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

Commit ba299063 authored by Alan Viverette's avatar Alan Viverette
Browse files

Ensure list scrolling API is in parity with view scrolling API

Change-Id: Icaf533c0085b80f3c52cc026e0da7468698724f9
parent 59f6b510
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -30395,6 +30395,7 @@ package android.widget {
    ctor public AbsListView(android.content.Context, android.util.AttributeSet, int);
    method public void afterTextChanged(android.text.Editable);
    method public void beforeTextChanged(java.lang.CharSequence, int, int, int);
    method public boolean canScrollList(int);
    method public void clearChoices();
    method public void clearTextFilter();
    method public void deferNotifyDataSetChanged();
@@ -30436,7 +30437,7 @@ package android.widget {
    method public int pointToPosition(int, int);
    method public long pointToRowId(int, int);
    method public void reclaimViews(java.util.List<android.view.View>);
    method public boolean scrollListBy(int);
    method public void scrollListBy(int);
    method public void setAdapter(android.widget.ListAdapter);
    method public void setCacheColorHint(int);
    method public void setChoiceMode(int);
+30 −4
Original line number Diff line number Diff line
@@ -4924,11 +4924,37 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
     * Scrolls the list items within the view by a specified number of pixels.
     *
     * @param y the amount of pixels to scroll by vertically
     * @return true if the list is able to scroll, or false if the list is
     *         already at the beginning/end and unable to scroll any more.
     * @see #canScrollList(int)
     */
    public boolean scrollListBy(int y) {
        return !trackMotionScroll(-y, -y);
    public void scrollListBy(int y) {
        trackMotionScroll(-y, -y);
    }

    /**
     * Check if the items in the list can be scrolled in a certain direction.
     *
     * @param direction Negative to check scrolling up, positive to check
     *            scrolling down.
     * @return true if the list can be scrolled in the specified direction,
     *         false otherwise.
     * @see #scrollListBy(int)
     */
    public boolean canScrollList(int direction) {
        final int childCount = getChildCount();
        if (childCount == 0) {
            return false;
        }

        final int firstPosition = mFirstPosition;
        final Rect listPadding = mListPadding;
        if (direction > 0) {
            final int lastBottom = getChildAt(childCount - 1).getBottom();
            final int lastPosition = firstPosition + childCount;
            return lastPosition < mItemCount || lastBottom > getHeight() - listPadding.bottom;
        } else {
            final int firstTop = getChildAt(0).getTop();
            return firstPosition > 0 || firstTop < listPadding.top;
        }
    }

    /**