public class

ListView

extends AbsListView
java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.AdapterView<T extends android.widget.Adapter>
         ↳ android.widget.AbsListView
           ↳ android.widget.ListView
Known Direct Subclasses

Class Overview

A view that shows items in a vertically scrolling list. The items come from the ListAdapter associated with this view.

Summary

Nested Classes
class ListView.FixedViewInfo A class that represents a fixed view in a list, for example a header at the top or a footer at the bottom. 
XML Attributes
Attribute Name Related Method Description
android:choiceMode Defines the choice behavior for the ListView. 
android:divider Drawable or color to draw between list items. 
android:dividerHeight Height of the divider. 
android:entries Reference to an array resource that will populate the ListView. 
android:footerDividersEnabled When set to false, the ListView will not draw the divider before each footer view. 
android:headerDividersEnabled When set to false, the ListView will not draw the divider after each header view. 
[Expand]
Inherited XML Attributes
From class android.widget.AbsListView
From class android.view.ViewGroup
From class android.view.View
Constants
int CHOICE_MODE_MULTIPLE The list allows multiple choices
int CHOICE_MODE_NONE Normal list that does not indicate choices
int CHOICE_MODE_SINGLE The list allows up to one choice
[Expand]
Inherited Constants
From class android.widget.AbsListView
From class android.widget.AdapterView
From class android.view.ViewGroup
From class android.view.View
Public Constructors
ListView(Context context)
ListView(Context context, AttributeSet attrs)
ListView(Context context, AttributeSet attrs, int defStyle)
Public Methods
void addFooterView(View v)
Add a fixed view to appear at the bottom of the list.
void addFooterView(View v, Object data, boolean isSelectable)
Add a fixed view to appear at the bottom of the list.
void addHeaderView(View v)
Add a fixed view to appear at the top of the list.
void addHeaderView(View v, Object data, boolean isSelectable)
Add a fixed view to appear at the top of the list.
void clearChoices()
Clear any choices previously set
boolean dispatchKeyEvent(KeyEvent event)
Dispatch a key event to the next view on the focus path.
boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event)
Dispatches an AccessibilityEvent to the View children to be populated.
ListAdapter getAdapter()
Returns the adapter currently in use in this ListView.
long[] getCheckItemIds()
Returns the set of checked items ids.
int getCheckedItemPosition()
Returns the currently checked item.
SparseBooleanArray getCheckedItemPositions()
Returns the set of checked items in the list.
int getChoiceMode()
Drawable getDivider()
Returns the drawable that will be drawn between each item in the list.
int getDividerHeight()
int getFooterViewsCount()
Returns the number of footer views in the list.
int getHeaderViewsCount()
Returns the number of header views in the list.
boolean getItemsCanFocus()
int getMaxScrollAmount()
boolean isItemChecked(int position)
Returns the checked state of the specified position.
boolean onKeyDown(int keyCode, KeyEvent event)
Default implementation of KeyEvent.Callback.onKeyMultiple(): perform press of the view when KEYCODE_DPAD_CENTER or KEYCODE_ENTER is released, if the view is enabled and clickable.
boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event)
Default implementation of KeyEvent.Callback.onKeyMultiple(): always returns false (doesn't handle the event).
boolean onKeyUp(int keyCode, KeyEvent event)
Default implementation of KeyEvent.Callback.onKeyMultiple(): perform clicking of the view when KEYCODE_DPAD_CENTER or KEYCODE_ENTER is released.
void onRestoreInstanceState(Parcelable state)
Hook allowing a view to re-apply a representation of its internal state that had previously been generated by onSaveInstanceState().
Parcelable onSaveInstanceState()
Hook allowing a view to generate a representation of its internal state that can later be used to create a new instance with that same state.
boolean onTouchEvent(MotionEvent ev)
Implement this method to handle touch screen motion events.
boolean performItemClick(View view, int position, long id)
Call the OnItemClickListener, if it is defined.
boolean removeFooterView(View v)
Removes a previously-added footer view.
boolean removeHeaderView(View v)
Removes a previously-added header view.
boolean requestChildRectangleOnScreen(View child, Rect rect, boolean immediate)
Called when a child of this group wants a particular rectangle to be positioned onto the screen.
void setAdapter(ListAdapter adapter)
Sets the data behind this ListView.
void setCacheColorHint(int color)
When set to a non-zero value, the cache color hint indicates that this list is always drawn on top of a solid, single-color, opaque background
void setChoiceMode(int choiceMode)
Defines the choice behavior for the List.
void setDivider(Drawable divider)
Sets the drawable that will be drawn between each item in the list.
void setDividerHeight(int height)
Sets the height of the divider that will be drawn between each item in the list.
void setFooterDividersEnabled(boolean footerDividersEnabled)
Enables or disables the drawing of the divider for footer views.
void setHeaderDividersEnabled(boolean headerDividersEnabled)
Enables or disables the drawing of the divider for header views.
void setItemChecked(int position, boolean value)
Sets the checked state of the specified position.
void setItemsCanFocus(boolean itemsCanFocus)
Indicates that the views created by the ListAdapter can contain focusable items.
void setSelection(int position)
Sets the currently selected item.
void setSelectionAfterHeaderView()
setSelectionAfterHeaderView set the selection to be the first list item after the header views.
void setSelectionFromTop(int position, int y)
Sets the selected item and positions the selection y pixels from the top edge of the ListView.
Protected Methods
boolean canAnimate()
Indicates whether the view group has the ability to animate its children after the first layout.
void dispatchDraw(Canvas canvas)
Called by draw to draw the child views.
View findViewTraversal(int id)
View findViewWithTagTraversal(Object tag)
void layoutChildren()
Subclasses must override this method to layout their children.
void onFinishInflate()
Finalize inflating a view from XML.
void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect)
Called by the view system when the focus state of this view changes.
void onMeasure(int widthMeasureSpec, int heightMeasureSpec)

Measure the view and its content to determine the measured width and the measured height.

[Expand]
Inherited Methods
From class android.widget.AbsListView
From class android.widget.AdapterView
From class android.view.ViewGroup
From class android.view.View
From class java.lang.Object
From interface android.graphics.drawable.Drawable.Callback
From interface android.text.TextWatcher
From interface android.view.KeyEvent.Callback
From interface android.view.ViewManager
From interface android.view.ViewParent
From interface android.view.ViewTreeObserver.OnGlobalLayoutListener
From interface android.view.ViewTreeObserver.OnTouchModeChangeListener
From interface android.view.accessibility.AccessibilityEventSource
From interface android.widget.Filter.FilterListener

XML Attributes

android:choiceMode

Since: API Level

Defines the choice behavior for the ListView. By default, lists do not have any choice behavior. By setting the choiceMode to singleChoice, the List allows up to one item to be in a chosen state. By setting the choiceMode to multipleChoice, the list allows any number of items to be chosen.

Must be one of the following constant values.

ConstantValueDescription
none0 Normal list that does not indicate choices.
singleChoice1 The list allows up to one choice.
multipleChoice2 The list allows multiple choices.

This corresponds to the global attribute resource symbol choiceMode.

Related Methods

android:divider

Since: API Level

Drawable or color to draw between list items.

May be a reference to another resource, in the form "@[+][package:]type:name" or to a theme attribute in the form "?[package:][type:]name".

May be a color value, in the form of "#rgb", "#argb", "#rrggbb", or "#aarrggbb".

This corresponds to the global attribute resource symbol divider.

Related Methods

android:dividerHeight

Since: API Level

Height of the divider. Will use the intrinsic height of the divider if this is not specified.

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), in (inches), mm (millimeters).

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

This corresponds to the global attribute resource symbol dividerHeight.

Related Methods

android:entries

Since: API Level

Reference to an array resource that will populate the ListView. For static content, this is simpler than populating the ListView programmatically.

Must be a reference to another resource, in the form "@[+][package:]type:name" or to a theme attribute in the form "?[package:][type:]name".

This corresponds to the global attribute resource symbol entries.

Related Methods

android:footerDividersEnabled

Since: API Level

When set to false, the ListView will not draw the divider before each footer view. The default value is true.

Must be a boolean value, either "true" or "false".

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

This corresponds to the global attribute resource symbol footerDividersEnabled.

Related Methods

android:headerDividersEnabled

Since: API Level

When set to false, the ListView will not draw the divider after each header view. The default value is true.

Must be a boolean value, either "true" or "false".

This may also be a reference to a resource (in the form "@[package:]type:name") or theme attribute (in the form "?[package:][type:]name") containing a value of this type.

This corresponds to the global attribute resource symbol headerDividersEnabled.

Related Methods

Constants

public static final int CHOICE_MODE_MULTIPLE

Since: API Level 1

The list allows multiple choices

Constant Value: 2 (0x00000002)

public static final int CHOICE_MODE_NONE

Since: API Level 1

Normal list that does not indicate choices

Constant Value: 0 (0x00000000)

public static final int CHOICE_MODE_SINGLE

Since: API Level 1

The list allows up to one choice

Constant Value: 1 (0x00000001)

Public Constructors

public ListView (Context context)

Since: API Level 1

public ListView (Context context, AttributeSet attrs)

Since: API Level 1

public ListView (Context context, AttributeSet attrs, int defStyle)

Since: API Level 1

Public Methods

public void addFooterView (View v)

Since: API Level 1

Add a fixed view to appear at the bottom of the list. If addFooterView is called more than once, the views will appear in the order they were added. Views added using this call can take focus if they want.

NOTE: Call this before calling setAdapter. This is so ListView can wrap the supplied cursor with one that that will also account for header views.

Parameters
v The view to add.

public void addFooterView (View v, Object data, boolean isSelectable)

Since: API Level 1

Add a fixed view to appear at the bottom of the list. If addFooterView is called more than once, the views will appear in the order they were added. Views added using this call can take focus if they want.

NOTE: Call this before calling setAdapter. This is so ListView can wrap the supplied cursor with one that that will also account for header views.

Parameters
v The view to add.
data Data to associate with this view
isSelectable true if the footer view can be selected

public void addHeaderView (View v)

Since: API Level 1

Add a fixed view to appear at the top of the list. If addHeaderView is called more than once, the views will appear in the order they were added. Views added using this call can take focus if they want.

NOTE: Call this before calling setAdapter. This is so ListView can wrap the supplied cursor with one that that will also account for header views.

Parameters
v The view to add.

public void addHeaderView (View v, Object data, boolean isSelectable)

Since: API Level 1

Add a fixed view to appear at the top of the list. If addHeaderView is called more than once, the views will appear in the order they were added. Views added using this call can take focus if they want.

NOTE: Call this before calling setAdapter. This is so ListView can wrap the supplied cursor with one that that will also account for header views.

Parameters
v The view to add.
data Data to associate with this view
isSelectable whether the item is selectable

public void clearChoices ()

Since: API Level 1

Clear any choices previously set

public boolean dispatchKeyEvent (KeyEvent event)

Since: API Level 1

Dispatch a key event to the next view on the focus path. This path runs from the top of the view tree down to the currently focused view. If this view has focus, it will dispatch to itself. Otherwise it will dispatch the next node down the focus path. This method also fires any key listeners.

Parameters
event The key event to be dispatched.
Returns
  • True if the event was handled, false otherwise.

public boolean dispatchPopulateAccessibilityEvent (AccessibilityEvent event)

Since: API Level 4

Dispatches an AccessibilityEvent to the View children to be populated.

Parameters
event The event.
Returns
  • True if the event population was completed.

public ListAdapter getAdapter ()

Since: API Level 1

Returns the adapter currently in use in this ListView. The returned adapter might not be the same adapter passed to setAdapter(ListAdapter) but might be a WrapperListAdapter.

Returns
  • The adapter currently used to display data in this ListView.

public long[] getCheckItemIds ()

Since: API Level 4

Returns the set of checked items ids. The result is only valid if the choice mode has not been set to CHOICE_MODE_SINGLE.

Returns
  • A new array which contains the id of each checked item in the list.

public int getCheckedItemPosition ()

Since: API Level 1

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 INVALID_POSITION if nothing is selected

public SparseBooleanArray getCheckedItemPositions ()

Since: API Level 1

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 position in the list, or null if the choice mode is set to CHOICE_MODE_NONE.

public int getChoiceMode ()

Since: API Level 1

Returns
  • The current choice mode

public Drawable getDivider ()

Since: API Level 1

Returns the drawable that will be drawn between each item in the list.

Returns
  • the current drawable drawn between list elements

public int getDividerHeight ()

Since: API Level 1

Returns
  • Returns the height of the divider that will be drawn between each item in the list.

public int getFooterViewsCount ()

Since: API Level 1

Returns the number of footer views in the list. Footer views are special views at the bottom of the list that should not be recycled during a layout.

Returns
  • The number of footer views, 0 in the default implementation.

public int getHeaderViewsCount ()

Since: API Level 1

Returns the number of header views in the list. Header views are special views at the top of the list that should not be recycled during a layout.

Returns
  • The number of header views, 0 in the default implementation.

public boolean getItemsCanFocus ()

Since: API Level 1

Returns
  • Whether the views created by the ListAdapter can contain focusable items.

public int getMaxScrollAmount ()

Since: API Level 1

Returns
  • The maximum amount a list view will scroll in response to an arrow event.

public boolean isItemChecked (int position)

Since: API Level 1

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

public boolean onKeyDown (int keyCode, KeyEvent event)

Since: API Level 1

Default implementation of KeyEvent.Callback.onKeyMultiple(): perform press of the view when KEYCODE_DPAD_CENTER or KEYCODE_ENTER is released, if the view is enabled and clickable.

Parameters
keyCode A key code that represents the button pressed, from KeyEvent.
event The KeyEvent object that defines the button action.
Returns
  • If you handled the event, return true. If you want to allow the event to be handled by the next receiver, return false.

public boolean onKeyMultiple (int keyCode, int repeatCount, KeyEvent event)

Since: API Level 1

Default implementation of KeyEvent.Callback.onKeyMultiple(): always returns false (doesn't handle the event).

Parameters
keyCode A key code that represents the button pressed, from KeyEvent.
repeatCount The number of times the action was made.
event The KeyEvent object that defines the button action.
Returns
  • If you handled the event, return true. If you want to allow the event to be handled by the next receiver, return false.

public boolean onKeyUp (int keyCode, KeyEvent event)

Since: API Level 1

Default implementation of KeyEvent.Callback.onKeyMultiple(): perform clicking of the view when KEYCODE_DPAD_CENTER or KEYCODE_ENTER is released.

Parameters
keyCode A key code that represents the button pressed, from KeyEvent.
event The KeyEvent object that defines the button action.
Returns
  • If you handled the event, return true. If you want to allow the event to be handled by the next receiver, return false.

public void onRestoreInstanceState (Parcelable state)

Since: API Level 1

Hook allowing a view to re-apply a representation of its internal state that had previously been generated by onSaveInstanceState(). This function will never be called with a null state.

Parameters
state The frozen state that had previously been returned by onSaveInstanceState().

public Parcelable onSaveInstanceState ()

Since: API Level 1

Hook allowing a view to generate a representation of its internal state that can later be used to create a new instance with that same state. This state should only contain information that is not persistent or can not be reconstructed later. For example, you will never store your current position on screen because that will be computed again when a new instance of the view is placed in its view hierarchy.

Some examples of things you may store here: the current cursor position in a text view (but usually not the text itself since that is stored in a content provider or other persistent storage), the currently selected item in a list view.

Returns
  • Returns a Parcelable object containing the view's current dynamic state, or null if there is nothing interesting to save. The default implementation returns null.

public boolean onTouchEvent (MotionEvent ev)

Since: API Level 1

Implement this method to handle touch screen motion events.

Parameters
ev The motion event.
Returns
  • True if the event was handled, false otherwise.

public boolean performItemClick (View view, int position, long id)

Since: API Level 1

Call the OnItemClickListener, if it is defined.

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.

public boolean removeFooterView (View v)

Since: API Level 1

Removes a previously-added footer view.

Parameters
v The view to remove
Returns
  • true if the view was removed, false if the view was not a footer view

public boolean removeHeaderView (View v)

Since: API Level 1

Removes a previously-added header view.

Parameters
v The view to remove
Returns
  • true if the view was removed, false if the view was not a header view

public boolean requestChildRectangleOnScreen (View child, Rect rect, boolean immediate)

Since: API Level 1

Called when a child of this group wants a particular rectangle to be positioned onto the screen. ViewGroups overriding this can trust that:

  • child will be a direct child of this group
  • rectangle will be in the child's coordinates

ViewGroups overriding this should uphold the contract:

  • nothing will change if the rectangle is already visible
  • the view port will be scrolled only just enough to make the rectangle visible
Parameters
child The direct child making the request.
rect The rectangle in the child's coordinates the child wishes to be on the screen.
immediate True to forbid animated or delayed scrolling, false otherwise
Returns
  • Whether the group scrolled to handle the operation

public void setAdapter (ListAdapter adapter)

Since: API Level 1