Class AbsListView

All Implemented Interfaces:
Drawable.Callback, ViewManager, ViewParent, Filter.FilterListener
Direct Known Subclasses:
GridView, ListView

public abstract class AbsListView extends AdapterView<ListAdapter> implements Filter.FilterListener
Base class that can be used to implement virtualized lists of items. A list does not have a spatial definition here. For instance, subclasses of this class can display the content of the list in a grid, in a carousel, as stack, etc.
  • Field Details

    • TRANSCRIPT_MODE_DISABLED

      public static final int TRANSCRIPT_MODE_DISABLED
      Disables the transcript mode.
      See Also:
    • TRANSCRIPT_MODE_NORMAL

      public static final int TRANSCRIPT_MODE_NORMAL
      The list will automatically scroll to the bottom when a data set change notification is received and only if the last item is already visible on screen.
      See Also:
    • TRANSCRIPT_MODE_ALWAYS_SCROLL

      public static final int TRANSCRIPT_MODE_ALWAYS_SCROLL
      The list will automatically scroll to the bottom, no matter what items are currently visible.
      See Also:
    • CHOICE_MODE_NONE

      public static final int CHOICE_MODE_NONE
      Normal list that does not indicate choices
      See Also:
    • CHOICE_MODE_SINGLE

      public static final int CHOICE_MODE_SINGLE
      The list allows up to one choice
      See Also:
    • CHOICE_MODE_MULTIPLE

      public static final int CHOICE_MODE_MULTIPLE
      The list allows multiple choices
      See Also:
    • CHOICE_MODE_MULTIPLE_MODAL

      public static final int CHOICE_MODE_MULTIPLE_MODAL
      The list allows multiple choices in a modal selection mode
      See Also:
  • Constructor Details

    • AbsListView

      public AbsListView(Context context)
  • Method Details

    • setAdapter

      public void setAdapter(@Nullable ListAdapter adapter)
      Sets the adapter that provides the data and the views to represent the data in this widget.
      Specified by:
      setAdapter in class AdapterView<ListAdapter>
      Parameters:
      adapter - The adapter to use to create this view's content.
    • getCheckedItemCount

      public int getCheckedItemCount()
      Returns the number of items currently selected. This will only be valid if the choice mode is not CHOICE_MODE_NONE (default).

      To determine the specific items that are currently selected, use one of the getChecked* methods.

      Returns:
      The number of items currently selected
      See Also:
    • isItemChecked

      public boolean isItemChecked(int position)
      Returns the checked state of the specified position. The result is only valid if the choice mode has been set to CHOICE_MODE_SINGLE or CHOICE_MODE_MULTIPLE.
      Parameters:
      position - The item whose checked state to return
      Returns:
      The item's checked state or false if choice mode is invalid
      See Also:
    • getCheckedItemPosition

      public int getCheckedItemPosition()
      Returns the currently checked item. The result is only valid if the choice mode has been set to CHOICE_MODE_SINGLE.
      Returns:
      The position of the currently checked item or AdapterView.INVALID_POSITION if nothing is selected
      See Also:
    • getCheckedItemPositions

      public SparseBooleanArray getCheckedItemPositions()
      Returns the set of checked items in the list. The result is only valid if the choice mode has not been set to CHOICE_MODE_NONE.
      Returns:
      A SparseBooleanArray which will return true for each call to get(int position) where position is a checked position in the list and false otherwise, or null if the choice mode is set to CHOICE_MODE_NONE.
    • getCheckedItemIds

      public long[] getCheckedItemIds()
      Returns the set of checked items ids. The result is only valid if the choice mode has not been set to CHOICE_MODE_NONE and the adapter has stable IDs. (Adapter.hasStableIds() == true)
      Returns:
      A new array which contains the id of each checked item in the list.
    • clearChoices

      public void clearChoices()
      Clear any choices previously set
    • setItemChecked

      public void setItemChecked(int position, boolean value)
      Sets the checked state of the specified position. The is only valid if the choice mode has been set to CHOICE_MODE_SINGLE or CHOICE_MODE_MULTIPLE.
      Parameters:
      position - The item whose checked state is to be checked
      value - The new checked state for the item
    • performItemClick

      public boolean performItemClick(View view, int position, long id)
      Description copied from class: AdapterView
      Call the OnItemClickListener, if it is defined. Performs all normal actions associated with clicking: reporting accessibility event, playing a sound, etc.
      Overrides:
      performItemClick in class AdapterView<ListAdapter>
      Parameters:
      view - The view within the AdapterView that was clicked.
      position - The position of the view in the adapter.
      id - The row id of the item that was clicked.
      Returns:
      True if there was an assigned OnItemClickListener that was called, false otherwise is returned.
    • getChoiceMode

      public int getChoiceMode()
      Returns:
      The current choice mode
      See Also:
    • setChoiceMode

      public void setChoiceMode(int choiceMode)
      Defines the choice behavior for the List. By default, Lists do not have any choice behavior (CHOICE_MODE_NONE). By setting the choiceMode to CHOICE_MODE_SINGLE, the List allows up to one item to be in a chosen state. By setting the choiceMode to CHOICE_MODE_MULTIPLE, the list allows any number of items to be chosen.
      Parameters:
      choiceMode - One of CHOICE_MODE_NONE, CHOICE_MODE_SINGLE, or CHOICE_MODE_MULTIPLE
    • setMultiChoiceModeListener

      public void setMultiChoiceModeListener(AbsListView.MultiChoiceModeListener listener)
      Set a AbsListView.MultiChoiceModeListener that will manage the lifecycle of the selection ActionMode. Only used when the choice mode is set to CHOICE_MODE_MULTIPLE_MODAL.
      Parameters:
      listener - Listener that will manage the selection mode
      See Also:
    • setSmoothScrollbarEnabled

      public void setSmoothScrollbarEnabled(boolean enabled)
      When smooth scrollbar is enabled, the position and size of the scrollbar thumb is computed based on the number of visible pixels in the visible items. This however assumes that all list items have the same height. If you use a list in which items have different heights, the scrollbar will change appearance as the user scrolls through the list. To avoid this issue, you need to disable this property.

      When smooth scrollbar is disabled, the position and size of the scrollbar thumb is based solely on the number of items in the adapter and the position of the visible items inside the adapter. This provides a stable scrollbar as the user navigates through a list of items with varying heights.

      Parameters:
      enabled - Whether or not to enable smooth scrollbar.
      See Also:
    • isSmoothScrollbarEnabled

      public boolean isSmoothScrollbarEnabled()
      Returns the current state of the fast scroll feature.
      Returns:
      True if smooth scrollbar is enabled is enabled, false otherwise.
      See Also:
    • setOnScrollListener

      public void setOnScrollListener(@Nullable AbsListView.OnScrollListener l)
      Set the listener that will receive notifications every time the list scrolls.
      Parameters:
      l - the scroll listener
    • getFocusedRect

      public void getFocusedRect(@NonNull Rect r)
      Description copied from class: View
      When a view has focus and the user navigates away from it, the next view is searched for starting from the rectangle filled in by this method.

      By default, the rectangle is the View.getDrawingRect(Rect)) of the view. However, if your view maintains some idea of internal selection, such as a cursor, or a selected row or column, you should override this method and fill in a more specific rectangle.

      Overrides:
      getFocusedRect in class View
      Parameters:
      r - The rectangle to fill in, in this view's coordinates.
    • isStackFromBottom

      public boolean isStackFromBottom()
      Indicates whether the content of this view is pinned to, or stacked from, the bottom edge.
      Returns:
      true if the content is stacked from the bottom edge, false otherwise
    • setStackFromBottom

      public void setStackFromBottom(boolean stackFromBottom)
      When stack from bottom is set to true, the list fills its content starting from the bottom of the view.
      Parameters:
      stackFromBottom - true to pin the view's content to the bottom edge, false to pin the view's content to the top edge
    • onFocusChanged

      protected void onFocusChanged(boolean gainFocus, int direction, @Nullable Rect previouslyFocusedRect)
      Description copied from class: View
      Called by the view system when the focus state of this view changes. When the focus change event is caused by directional navigation, direction and previouslyFocusedRect provide insight into where the focus is coming from. When overriding, be sure to call up through to the super class so that the standard focus handling will occur.
      Overrides:
      onFocusChanged in class View
      Parameters:
      gainFocus - True if the View has focus; false otherwise.
      direction - The direction focus has moved when requestFocus() is called to give this view focus. Values are View.FOCUS_UP, View.FOCUS_DOWN, View.FOCUS_LEFT, View.FOCUS_RIGHT, View.FOCUS_FORWARD, or View.FOCUS_BACKWARD. It may not always apply, in which case use the default.
      previouslyFocusedRect - The rectangle, in this view's coordinate system, of the previously focused view. If applicable, this will be passed in as finer grained information about where the focus is coming from (in addition to direction). Will be null otherwise.
    • requestLayout

      public void requestLayout()
      Description copied from class: View
      Call this when something has changed which has invalidated the layout of this view. This will schedule a layout pass of the view tree. This should not be called while the view hierarchy is currently in a layout pass (View.isInLayout(). If layout is happening, the request may be honored at the end of the current layout pass (and then layout will run again) or after the current frame is drawn and the next layout occurs.

      Subclasses which override this method should call the superclass method to handle possible request-during-layout errors correctly.

      Specified by:
      requestLayout in interface ViewParent
      Overrides:
      requestLayout in class View
    • computeVerticalScrollExtent

      protected int computeVerticalScrollExtent()
      Description copied from class: View

      Compute the vertical extent of the vertical scrollbar's thumb within the vertical range. This value is used to compute the length of the thumb within the scrollbar's track.

      The range is expressed in arbitrary units that must be the same as the units used by View.computeVerticalScrollRange() and View.computeVerticalScrollOffset().

      The default extent is the drawing height of this view.

      Overrides:
      computeVerticalScrollExtent in class View
      Returns:
      the vertical extent of the scrollbar's thumb
      See Also:
    • computeVerticalScrollOffset

      protected int computeVerticalScrollOffset()
      Description copied from class: View

      Compute the vertical offset of the vertical scrollbar's thumb within the horizontal range. This value is used to compute the position of the thumb within the scrollbar's track.

      The range is expressed in arbitrary units that must be the same as the units used by View.computeVerticalScrollRange() and View.computeVerticalScrollExtent().

      The default offset is the scroll offset of this view.

      Overrides:
      computeVerticalScrollOffset in class View
      Returns:
      the vertical offset of the scrollbar's thumb
      See Also:
    • computeVerticalScrollRange

      protected int computeVerticalScrollRange()
      Description copied from class: View

      Compute the vertical range that the vertical scrollbar represents.

      The range is expressed in arbitrary units that must be the same as the units used by View.computeVerticalScrollExtent() and View.computeVerticalScrollOffset().

      Overrides:
      computeVerticalScrollRange in class View
      Returns:
      the total vertical range represented by the vertical scrollbar

      The default range is the drawing height of this view.

      See Also:
    • onMeasure

      protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
      Description copied from class: View
      Measure the view and its content to determine the measured width and the measured height. This method is invoked by View.measure(int, int) and should be overridden by subclasses to provide accurate and efficient measurement of their contents.

      CONTRACT: When overriding this method, you must call View.setMeasuredDimension(int, int) to store the measured width and height of this view. Failure to do so will trigger an IllegalStateException, thrown by View.measure(int, int). Calling super.onMeasure() is a valid use.

      The base class implementation of measure defaults to the background size, unless a larger size is allowed by the MeasureSpec. Subclasses should override the base one to provide better measurements of their content.

      Overrides:
      onMeasure in class View
      Parameters:
      widthMeasureSpec - width measure specification imposed by the parent MeasureSpec
      heightMeasureSpec - height measure specification imposed by the parent MeasureSpec
    • onLayout

      protected void onLayout(boolean changed, int l, int t, int r, int b)
      Subclasses should NOT override this method but layoutChildren() instead.
      Overrides:
      onLayout in class AdapterView<ListAdapter>
      Parameters:
      changed - This is a new size or position for this view
      l - Left position, relative to parent
      t - Top position, relative to parent
      r - Right position, relative to parent
      b - Bottom position, relative to parent
    • layoutChildren

      protected void layoutChildren()
      Subclasses must override this method to layout their children.
    • getSelectedView

      public View getSelectedView()
      Specified by:
      getSelectedView in class AdapterView<ListAdapter>
      Returns:
      The view corresponding to the currently selected item, or null if nothing is selected
    • getListPaddingTop

      public int getListPaddingTop()
      List padding is the maximum of the normal view's padding and the padding of the selector.
      Returns:
      The top list padding.
      See Also:
    • getListPaddingBottom

      public int getListPaddingBottom()
      List padding is the maximum of the normal view's padding and the padding of the selector.
      Returns:
      The bottom list padding.
      See Also:
    • getListPaddingLeft

      public int getListPaddingLeft()
      List padding is the maximum of the normal view's padding and the padding of the selector.
      Returns:
      The left list padding.
      See Also:
    • getListPaddingRight

      public int getListPaddingRight()
      List padding is the maximum of the normal view's padding and the padding of the selector.
      Returns:
      The right list padding.
      See Also:
    • dispatchDraw

      protected void dispatchDraw(@NonNull Canvas canvas)
      Description copied from class: View
      Draw the child views.
      Overrides:
      dispatchDraw in class ViewGroup
      Parameters:
      canvas - the canvas to draw content
    • internalSetPadding

      protected void internalSetPadding(int left, int top, int right, int bottom)
      Overrides:
      internalSetPadding in class ViewGroup
    • onSizeChanged

      protected void onSizeChanged(int w, int h, int oldw, int oldh)
      Description copied from class: View
      Called when width or height changed
      Overrides:
      onSizeChanged in class View
      Parameters:
      w - new width
      h - new height
      oldw - previous width
      oldh - previous height
    • shouldDrawSelector

      @Internal public final boolean shouldDrawSelector()
    • setDrawSelectorOnTop

      public void setDrawSelectorOnTop(boolean onTop)
      Controls whether the selection highlight drawable should be drawn on top of the item or behind it.
      Parameters:
      onTop - If true, the selector will be drawn on the item it is highlighting. The default is false.
    • isDrawSelectorOnTop

      public boolean isDrawSelectorOnTop()
      Returns whether the selection highlight drawable should be drawn on top of the item or behind it.
      Returns:
      true if selector is drawn on top, false otherwise
    • setSelector

      public void setSelector(Drawable sel)
    • getSelector

      public Drawable getSelector()
      Returns the selector Drawable that is used to draw the selection in the list.
      Returns:
      the drawable used to display the selector
    • setScrollIndicators

      public void setScrollIndicators(View up, View down)
    • drawableStateChanged

      protected void drawableStateChanged()
      Description copied from class: View
      This function is called whenever the state of the view changes in such a way that it impacts the state of drawables being shown.

      If the View has a StateListAnimator, it will also be called to run necessary state change animations.

      Be sure to call through to the superclass when overriding this function.

      Overrides:
      drawableStateChanged in class ViewGroup
      See Also:
    • verifyDrawable

      public boolean verifyDrawable(@NonNull Drawable dr)
      Description copied from class: View
      If your view subclass is displaying its own Drawable objects, it should override this function and return true for any Drawable it is displaying. This allows animations for those drawables to be scheduled.

      Be sure to call through to the super class when overriding this function.

      Overrides:
      verifyDrawable in class View
      Parameters:
      dr - The Drawable to verify. Return true if it is one you are displaying, else return the result of calling through to the super class.
      Returns:
      boolean If true then the Drawable is being displayed in the view; else false and it is not allowed to animate.
      See Also:
    • onAttachedToWindow

      protected void onAttachedToWindow()
      Description copied from class: View
      This is called when the view is attached to a window. At this point it has a Surface and will start drawing. Note that this function is guaranteed to be called before View.onDraw(Canvas), however it may be called any time before the first onDraw -- including before or after View.onMeasure(int, int).
      Overrides:
      onAttachedToWindow in class View
      See Also:
    • onDetachedFromWindow

      protected void onDetachedFromWindow()
      Description copied from class: View
      This is called when the view is detached from a window. At this point it no longer has a surface for drawing.
      Overrides:
      onDetachedFromWindow in class AdapterView<ListAdapter>
      See Also:
    • onWindowFocusChanged

      public void onWindowFocusChanged(boolean hasWindowFocus)
      Description copied from class: View
      Called when the window containing this view gains or loses focus. Note that this is separate from view focus: to receive key events, both your view and its window must have focus. If a window is displayed on top of yours that takes input focus, then your own window will lose focus but the view focus will remain unchanged.
      Overrides:
      onWindowFocusChanged in class View
      Parameters:
      hasWindowFocus - True if the window containing this view now has focus, false otherwise.
    • onCancelPendingInputEvents

      public void onCancelPendingInputEvents()
      Description copied from class: View
      Called as the result of a call to View.cancelPendingInputEvents() on this view or a parent view.

      This method is responsible for removing any pending high-level input events that were posted to the event queue to run later. Custom view classes that post their own deferred high-level events via View.post(Runnable), View.postDelayed(Runnable, long) or Handler should override this method, call super.onCancelPendingInputEvents() and remove those callbacks as appropriate.

      Overrides:
      onCancelPendingInputEvents in class View
    • getContextMenuInfo

      protected ContextMenu.ContextMenuInfo getContextMenuInfo()
      Description copied from class: View
      Views should implement this if they have extra information to associate with the context menu. The return result is supplied as a parameter to the View.OnCreateContextMenuListener.onCreateContextMenu(ContextMenu, View, ContextMenuInfo) callback.
      Overrides:
      getContextMenuInfo in class View
      Returns:
      Extra information about the item for which the context menu should be shown. This information will vary across different subclasses of View.
    • showContextMenu

      public boolean showContextMenu(float x, float y)
      Description copied from class: View
      Shows the context menu for this view anchored to the specified view-relative coordinate.
      Overrides:
      showContextMenu in class View
      Parameters:
      x - the X coordinate in pixels relative to the view to which the menu should be anchored, or Float.NaN to disable anchoring
      y - the Y coordinate in pixels relative to the view to which the menu should be anchored, or Float.NaN to disable anchoring
      Returns:
      true if the context menu was shown, false otherwise
    • showContextMenuForChild

      public boolean showContextMenuForChild(View originalView, float x, float y)
      Description copied from interface: ViewParent
      Shows the context menu for the specified view or its ancestors anchored to the specified view-relative coordinate.

      In most cases, a subclass does not need to override this. However, if the subclass is added directly to the window manager (for example, ViewManager.addView(View, ViewGroup.LayoutParams)) then it should override this and show the context menu.

      Specified by:
      showContextMenuForChild in interface ViewParent
      Overrides:
      showContextMenuForChild in class ViewGroup
      Parameters:
      originalView - the source view where the context menu was first invoked
      x - the X coordinate in pixels relative to the original view to which the menu should be anchored, or Float.NaN to disable anchoring
      y - the Y coordinate in pixels relative to the original view to which the menu should be anchored, or Float.NaN to disable anchoring
      Returns:
      true if the context menu was shown, false otherwise
    • onKeyDown

      public boolean onKeyDown(int keyCode, @NonNull KeyEvent event)
      Description copied from class: View
      Default implementation: perform press of the view when KeyEvent.KEY_ENTER, KeyEvent.KEY_KP_ENTER or KeyEvent.KEY_SPACE is released, if the view is enabled and clickable.
      Overrides:
      onKeyDown in class View
      Parameters:
      keyCode - a key code that represents the button pressed, from KeyEvent
      event - the KeyEvent object that defines the button action
    • onKeyUp

      public boolean onKeyUp(int keyCode, @NonNull KeyEvent event)
      Description copied from class: View
      Default implementation: perform clicking of the view when KeyEvent.KEY_ENTER, KeyEvent.KEY_KP_ENTER or KeyEvent.KEY_SPACE is released.
      Overrides:
      onKeyUp in class View
      Parameters:
      keyCode - A key code that represents the button pressed, from KeyEvent.
      event - The KeyEvent object that defines the button action.
    • dispatchSetPressed

      protected void dispatchSetPressed(boolean pressed)
      Description copied from class: View
      Dispatch setPressed to all of this View's children.
      Overrides:
      dispatchSetPressed in class ViewGroup
      Parameters:
      pressed - The new pressed state
      See Also:
    • dispatchDrawableHotspotChanged

      public void dispatchDrawableHotspotChanged(float x, float y)
      Description copied from class: ViewGroup
      Dispatches drawable hotspot changes to child views that meet at least one of the following criteria:
      Overrides:
      dispatchDrawableHotspotChanged in class ViewGroup
      Parameters:
      x - hotspot x coordinate
      y - hotspot y coordinate
      See Also:
    • pointToPosition

      public int pointToPosition(int x, int y)
      Maps a point to a position in the list.
      Parameters:
      x - X in local coordinate
      y - Y in local coordinate
      Returns:
      The position of the item which contains the specified point, or AdapterView.INVALID_POSITION if the point does not intersect an item.
    • pointToRowId

      public long pointToRowId(int x, int y)
      Maps a point to a the rowId of the item which intersects that point.
      Parameters:
      x - X in local coordinate
      y - Y in local coordinate
      Returns:
      The rowId of the item which contains the specified point, or AdapterView.INVALID_ROW_ID if the point does not intersect an item.
    • onTouchModeChanged

      public void onTouchModeChanged(boolean isInTouchMode)
    • onTouchEvent

      public boolean onTouchEvent(@NonNull MotionEvent ev)
      Description copied from class: View
      Implement this method to handle touch screen motion events.

      If this method is used to detect click actions, it is recommended that the actions be performed by implementing and calling View.performClick(). This will ensure consistent system behavior.

      Overrides:
      onTouchEvent in class View
      Parameters:
      ev - the touch event
      Returns:
      true if the event was handled by the view, false otherwise
    • onOverScrolled

      protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY)
      Description copied from class: View
      Called by View.overScrollBy(int, int, int, int, int, int, int, int, boolean) to respond to the results of an over-scroll operation.
      Overrides:
      onOverScrolled in class View
      Parameters:
      scrollX - New X scroll value in pixels
      scrollY - New Y scroll value in pixels
      clampedX - True if scrollX was clamped to an over-scroll boundary
      clampedY - True if scrollY was clamped to an over-scroll boundary
    • onGenericMotionEvent

      public boolean onGenericMotionEvent(@NonNull MotionEvent event)
      Description copied from class: View
      Implement this method to handle generic motion events.

      Implementations of this method should check if this view ENABLED and CLICKABLE.

      Overrides:
      onGenericMotionEvent in class View
      Parameters:
      event - the generic motion event being processed.
      Returns:
      true if the event was consumed by the view, false otherwise
    • fling

      public void fling(int velocityY)
      Initiate a fling with the given velocity.

      Applications can use this method to manually initiate a fling as if the user initiated it via touch interaction.

      Parameters:
      velocityY - Vertical velocity in pixels per second. Note that this is velocity of content, not velocity of a touch that initiated the fling.
    • onStartNestedScroll

      public boolean onStartNestedScroll(@NonNull View child, @NonNull View target, int axes, int type)
      Description copied from interface: ViewParent
      React to a descendant view initiating a nestable scroll operation, claiming the nested scroll operation if appropriate.

      This method will be called in response to a descendant view invoking View.startNestedScroll(int, int). Each parent up the view hierarchy will be given an opportunity to respond and claim the nested scrolling operation by returning true.

      This method may be overridden by ViewParent implementations to indicate when the view is willing to support a nested scrolling operation that is about to begin. If it returns true, this ViewParent will become the target view's nested scrolling parent for the duration of the scroll operation in progress. When the nested scroll is finished this ViewParent will receive a call to ViewParent.onStopNestedScroll(View, int).

      Specified by:
      onStartNestedScroll in interface ViewParent
      Overrides:
      onStartNestedScroll in class ViewGroup
      Parameters:
      child - Direct child of this ViewParent containing target
      target - View that initiated the nested scroll
      axes - Flags consisting of View.SCROLL_AXIS_HORIZONTAL, View.SCROLL_AXIS_VERTICAL or both
      type - the type of input which cause this scroll event
      Returns:
      true if this ViewParent accepts the nested scroll operation
    • onNestedScrollAccepted

      public void onNestedScrollAccepted(@NonNull View child, @NonNull View target, int axes, int type)
      Description copied from interface: ViewParent
      React to the successful claiming of a nested scroll operation.

      This method will be called after onStartNestedScroll returns true. It offers an opportunity for the view and its superclasses to perform initial configuration for the nested scroll. Implementations of this method should always call their superclasses' implementation of this method if one is present.

      Specified by:
      onNestedScrollAccepted in interface ViewParent
      Overrides:
      onNestedScrollAccepted in class ViewGroup
      Parameters:
      child - Direct child of this ViewParent containing target
      target - View that initiated the nested scroll
      axes - Flags consisting of View.SCROLL_AXIS_HORIZONTAL, View.SCROLL_AXIS_VERTICAL or both
      type - the type of input which cause this scroll event
      See Also:
    • onNestedScroll

      public void onNestedScroll(@NonNull View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, int type, @NonNull int[] consumed)
      Description copied from interface: ViewParent
      React to a nested scroll in progress.

      This method will be called when the ViewParent's current nested scrolling child view dispatches a nested scroll event. To receive calls to this method the ViewParent must have previously returned true for a call to ViewParent.onStartNestedScroll(View, View, int, int).

      Both the consumed and unconsumed portions of the scroll distance are reported to the ViewParent. An implementation may choose to use the consumed portion to match or chase scroll position of multiple child elements, for example. The unconsumed portion may be used to allow continuous dragging of multiple scrolling or draggable elements, such as scrolling a list within a vertical drawer where the drawer begins dragging once the edge of inner scrolling content is reached.

      This method is called when a nested scrolling child invokes View.dispatchNestedScroll(int, int, int, int, int[], int, int[])} or one of methods it overloads.

      An implementation must report how many pixels of the x and y scroll distances were consumed by this nested scrolling parent by adding the consumed distances to the consumed parameter. consumed should also be passed up to it's nested scrolling parent so that the parent may also add any scroll distance it consumes. Index 0 corresponds to dx and index 1 corresponds to dy.

      Specified by:
      onNestedScroll in interface ViewParent
      Overrides:
      onNestedScroll in class ViewGroup
      Parameters:
      target - The descendant view controlling the nested scroll
      dxConsumed - Horizontal scroll distance in pixels already consumed by target
      dyConsumed - Vertical scroll distance in pixels already consumed by target
      dxUnconsumed - Horizontal scroll distance in pixels not consumed by target
      dyUnconsumed - Vertical scroll distance in pixels not consumed by target
      type - the type of input which cause this scroll event
      consumed - Output. Upon this method returning, will contain the scroll distances consumed by this nested scrolling parent and the scroll distances consumed by any other parent up the view hierarchy
      See Also:
    • onNestedFling

      public boolean onNestedFling(@NonNull View target, float velocityX, float velocityY, boolean consumed)
      Description copied from interface: ViewParent
      Request a fling from a nested scroll.

      This method signifies that a nested scrolling child has detected suitable conditions for a fling. Generally this means that a touch scroll has ended with a velocity in the direction of scrolling that meets or exceeds the minimum fling velocity along a scrollable axis.

      If a nested scrolling child view would normally fling but it is at the edge of its own content, it can use this method to delegate the fling to its nested scrolling parent instead. The parent may optionally consume the fling or observe a child fling.

      Specified by:
      onNestedFling in interface ViewParent
      Overrides:
      onNestedFling in class ViewGroup
      Parameters:
      target - View that initiated the nested scroll
      velocityX - Horizontal velocity in pixels per second
      velocityY - Vertical velocity in pixels per second
      consumed - true if the child consumed the fling, false otherwise
      Returns:
      true if this parent consumed or otherwise reacted to the fling
    • onDrawForeground

      public void onDrawForeground(@NonNull Canvas canvas)
      Description copied from class: View
      Draw any foreground content for this view.

      Foreground content may consist of scroll bars, a foreground drawable or other view-specific decorations. The foreground is drawn on top of the primary view content.

      Overrides:
      onDrawForeground in class View
      Parameters:
      canvas - the canvas to draw content
    • requestDisallowInterceptTouchEvent

      public void requestDisallowInterceptTouchEvent(boolean disallowIntercept)
      Description copied from interface: ViewParent
      Called when a child does not want this parent and its ancestors to intercept touch events with ViewGroup.onInterceptTouchEvent(MotionEvent).

      This parent should pass this call onto its parents. This parent must obey this request for the duration of the touch (that is, only clear the flag after this parent has received an up or a cancel.

      Specified by:
      requestDisallowInterceptTouchEvent in interface ViewParent
      Overrides:
      requestDisallowInterceptTouchEvent in class ViewGroup
      Parameters:
      disallowIntercept - True if the child does not want the parent to intercept touch events.
    • onInterceptTouchEvent

      public boolean onInterceptTouchEvent(@NonNull MotionEvent ev)
      Description copied from class: ViewGroup
      Implement this method to intercept all touch screen motion events. This allows you to watch events as they are dispatched to your children, and take ownership of the current gesture at any point.

      Using this function takes some care, as it has a fairly complicated interaction with View.onTouchEvent(MotionEvent), and using it requires implementing that method as well as this one in the correct way. Events will be received in the following order:

      1. You will receive the down event here.
      2. The down event will be handled either by a child of this view group, or given to your own onTouchEvent() method to handle; this means you should implement onTouchEvent() to return true, so you will continue to see the rest of the gesture (instead of looking for a parent view to handle it). Also, by returning true from onTouchEvent(), you will not receive any following events in onInterceptTouchEvent() and all touch processing must happen in onTouchEvent() like normal.
      3. For as long as you return false from this function, each following event (up to and including the final up) will be delivered first here and then to the target's onTouchEvent().
      4. If you return true from here, you will not receive any following events: the target view will receive the same event but with the action MotionEvent.ACTION_CANCEL, and all further events will be delivered to your onTouchEvent() method and no longer appear here.
      Overrides:
      onInterceptTouchEvent in class ViewGroup
      Parameters:
      ev - The motion event being dispatched down the hierarchy.
      Returns:
      Return true to steal motion events from the children and have them dispatched to this ViewGroup through onTouchEvent(). The current target will receive an ACTION_CANCEL event, and no further messages will be delivered here.
    • addTouchables

      public void addTouchables(@NonNull ArrayList<View> views)
      Add any touchable views that are descendants of this view (possibly including this view if it is touchable itself) to views.
      Overrides:
      addTouchables in class ViewGroup
      Parameters:
      views - Touchable views found so far
    • setFriction

      public void setFriction(float friction)
      The amount of friction applied to flings. The default value is
      invalid reference
      ViewConfiguration#getScrollFriction
      .
    • setVelocityScale

      public void setVelocityScale(float scale)
      Sets a scale factor for the fling velocity. The initial scale factor is 1.0.
      Parameters:
      scale - The scale factor to multiply the velocity by.
    • smoothScrollToPosition

      public void smoothScrollToPosition(int position)
      Smoothly scroll to the specified adapter position. The view will scroll such that the indicated position is displayed.
      Parameters:
      position - Scroll to this adapter position.
    • smoothScrollToPositionFromTop

      public void smoothScrollToPositionFromTop(int position, int offset, int duration)
      Smoothly scroll to the specified adapter position. The view will scroll such that the indicated position is displayed offset pixels below the top edge of the view. If this is impossible, (e.g. the offset would scroll the first or last item beyond the boundaries of the list) it will get as close as possible. The scroll will take duration milliseconds to complete.
      Parameters:
      position - Position to scroll to
      offset - Desired distance in pixels of position from the top of the view when scrolling is finished
      duration - Number of milliseconds to use for the scroll
    • smoothScrollToPositionFromTop

      public void smoothScrollToPositionFromTop(int position, int offset)
      Smoothly scroll to the specified adapter position. The view will scroll such that the indicated position is displayed offset pixels below the top edge of the view. If this is impossible, (e.g. the offset would scroll the first or last item beyond the boundaries of the list) it will get as close as possible.
      Parameters:
      position - Position to scroll to
      offset - Desired distance in pixels of position from the top of the view when scrolling is finished
    • smoothScrollToPosition

      public void smoothScrollToPosition(int position, int boundPosition)
      Smoothly scroll to the specified adapter position. The view will scroll such that the indicated position is displayed, but it will stop early if scrolling further would scroll boundPosition out of view.
      Parameters:
      position - Scroll to this adapter position.
      boundPosition - Do not scroll if it would move this adapter position out of view.
    • smoothScrollBy

      public void smoothScrollBy(int distance, int duration)
      Smoothly scroll by distance pixels over duration milliseconds.
      Parameters:
      distance - Distance to scroll in pixels.
      duration - Duration of the scroll animation in milliseconds.
    • scrollListBy

      public void scrollListBy(int y)
      Scrolls the list items within the view by a specified number of pixels.

      The actual amount of scroll is capped by the list content viewport height which is the list height minus top and bottom paddings minus one pixel.

      Parameters:
      y - the amount of pixels to scroll by vertically
      See Also:
    • canScrollList

      public boolean canScrollList(int direction)
      Check if the items in the list can be scrolled in a certain direction.
      Parameters:
      direction - Negative to check scrolling up, positive to check scrolling down.
      Returns:
      true if the list can be scrolled in the specified direction, false otherwise.
      See Also:
    • invalidateViews

      public void invalidateViews()
      Causes all the views to be rebuilt and redrawn.
    • handleDataChanged

      protected void handleDataChanged()
    • onFilterComplete

      public void onFilterComplete(int count)
      Description copied from interface: Filter.FilterListener

      Notifies the end of a filtering operation.

      Specified by:
      onFilterComplete in interface Filter.FilterListener
      Parameters:
      count - the number of values computed by the filter
    • generateDefaultLayoutParams

      @NonNull protected ViewGroup.LayoutParams generateDefaultLayoutParams()
      Description copied from class: ViewGroup
      Returns a set of default layout parameters. These parameters are requested when the View passed to ViewGroup.addView(View) has no layout parameters already set. If null is returned, an exception is thrown from addView.
      Overrides:
      generateDefaultLayoutParams in class ViewGroup
      Returns:
      a set of default layout parameters
    • generateLayoutParams

      @NonNull protected ViewGroup.LayoutParams generateLayoutParams(@NonNull ViewGroup.LayoutParams p)
      Description copied from class: ViewGroup
      Returns a safe set of layout parameters based on the supplied layout params. When a ViewGroup is passed a View whose layout params do not pass the test of ViewGroup.checkLayoutParams(LayoutParams), this method is invoked. This method should return a new set of layout params suitable for this ViewGroup, possibly by copying the appropriate attributes from the specified set of layout params.
      Overrides:
      generateLayoutParams in class ViewGroup
      Parameters:
      p - The layout parameters to convert into a suitable set of layout parameters for this ViewGroup.
      Returns:
      an instance of ViewGroup.LayoutParams or one of its descendants
    • checkLayoutParams

      protected boolean checkLayoutParams(ViewGroup.LayoutParams p)
      Description copied from class: ViewGroup
      Check whether given params fit to this view group.

      See also ViewGroup.generateLayoutParams(LayoutParams) See also ViewGroup.generateDefaultLayoutParams()

      Overrides:
      checkLayoutParams in class ViewGroup
      Parameters:
      p - layout params to check
      Returns:
      if params matched to this view group
    • setTranscriptMode

      public void setTranscriptMode(int mode)
      Puts the list or grid into transcript mode. In this mode the list or grid will always scroll to the bottom to show new items.
      Parameters:
      mode - the transcript mode to set
      See Also:
    • getTranscriptMode

      public int getTranscriptMode()
      Returns the current transcript mode.
      Returns:
      TRANSCRIPT_MODE_DISABLED, TRANSCRIPT_MODE_NORMAL or TRANSCRIPT_MODE_ALWAYS_SCROLL
    • reclaimViews

      public void reclaimViews(@NonNull List<View> views)
      Move all views (excluding headers and footers) held by this AbsListView into the supplied List. This includes views displayed on the screen as well as views stored in AbsListView's internal view recycler.
      Parameters:
      views - A list into which to put the reclaimed views
    • setEdgeEffectColor

      public void setEdgeEffectColor(int color)
      Sets the edge effect color for both top and bottom edge effects.
      Parameters:
      color - The color for the edge effects.
      See Also:
    • setBottomEdgeEffectColor

      public void setBottomEdgeEffectColor(int color)
      Sets the bottom edge effect color.
      Parameters:
      color - The color for the bottom edge effect.
      See Also:
    • setTopEdgeEffectColor

      public void setTopEdgeEffectColor(int color)
      Sets the top edge effect color.
      Parameters:
      color - The color for the top edge effect.
      See Also:
    • getTopEdgeEffectColor

      public int getTopEdgeEffectColor()
      Returns the top edge effect color.
      Returns:
      The top edge effect color.
      See Also:
    • getBottomEdgeEffectColor

      public int getBottomEdgeEffectColor()
      Returns the bottom edge effect color.
      Returns:
      The bottom edge effect color.
      See Also:
    • setRecyclerListener

      public void setRecyclerListener(@Nullable AbsListView.RecyclerListener listener)
      Sets the recycler listener to be notified whenever a View is set aside in the recycler for later reuse. This listener can be used to free resources associated to the View.
      Parameters:
      listener - The recycler listener to be notified of views set aside in the recycler.
      See Also:
    • setSelectionFromTop

      public void setSelectionFromTop(int position, int y)
      Sets the selected item and positions the selection y pixels from the top edge of the ListView. (If in touch mode, the item will not be selected but it will still be positioned appropriately.)
      Parameters:
      position - Index (starting at 0) of the data item to be selected.
      y - The distance from the top edge of the ListView (plus padding) that the item will be positioned.