Android
android.widget
public class

android.widget.ExpandableListView

java.lang.Object
android.view.View Drawable.Callback KeyEvent.Callback
android.view.ViewGroup ViewManager ViewParent
android.widget.AdapterView<T extends android.widget.Adapter>
android.widget.AbsListView TextWatcher ViewTreeObserver.OnGlobalLayoutListener ViewTreeObserver.OnTouchModeChangeListener Filter.FilterListener
android.widget.ListView
android.widget.ExpandableListView

A view that shows items in a vertically scrolling two-level list. This differs from the ListView by allowing two levels: groups which can individually be expanded to show its children. The items come from the ExpandableListAdapter associated with this view.

Expandable lists are able to show an indicator beside each item to display the item's current state (the states are usually one of expanded group, collapsed group, child, or last child). Use setChildIndicator(Drawable) or setGroupIndicator(Drawable) (or the corresponding XML attributes) to set these indicators (see the docs for each method to see additional state that each Drawable can have). The default style for an ExpandableListView provides indicators which will be shown next to Views given to the ExpandableListView. The layouts android.R.layout.simple_expandable_list_item_1 and android.R.layout.simple_expandable_list_item_2 (which should be used with SimpleCursorTreeAdapter) contain the preferred position information for indicators.

The context menu information set by an ExpandableListView will be a ExpandableListView.ExpandableListContextMenuInfo object with packedPosition being a packed position that can be used with getPackedPositionType(long) and the other similar methods.

Note: You cannot use the value wrap_content for the android:layout_height attribute of a ExpandableListView in XML if the parent's size is also not strictly specified (for example, if the parent were ScrollView you could not specify wrap_content since it also can be any length. However, you can use wrap_content if the ExpandableListView parent has a specific size, such as 100 pixels.

Nested Classes
ExpandableListView.ExpandableListContextMenuInfo Extra menu information specific to an ExpandableListView provided to the onCreateContextMenu(ContextMenu, View, ContextMenuInfo) callback when a context menu is brought up for this AdapterView. 
ExpandableListView.OnChildClickListener Interface definition for a callback to be invoked when a child in this expandable list has been clicked. 
ExpandableListView.OnGroupClickListener Interface definition for a callback to be invoked when a group in this expandable list has been clicked. 
ExpandableListView.OnGroupCollapseListener Used for being notified when a group is collapsed  
ExpandableListView.OnGroupExpandListener Used for being notified when a group is expanded  

Summary

XML Attributes

Attribute name Related methods  
android:childDivider   Drawable or color that is used as a divider for children. 
android:childIndicator   Indicator shown beside the child View. 
android:childIndicatorLeft   The left bound for a child's indicator. 
android:childIndicatorRight   The right bound for a child's indicator. 
android:groupIndicator   Indicator shown beside the group View. 
android:indicatorLeft   The left bound for an item's indicator. 
android:indicatorRight   The right bound for an item's indicator. 
XML Attributes inherited from class android.widget.ListView
XML Attributes inherited from class android.widget.AbsListView
XML Attributes inherited from class android.view.ViewGroup
XML Attributes inherited from class android.view.View

Constants

      Value  
int  CHILD_INDICATOR_INHERIT  Denotes when a child indicator should inherit this bound from the generic indicator bounds   -1  0xffffffff 
int  PACKED_POSITION_TYPE_CHILD  The packed position represents a child.  0x00000001 
int  PACKED_POSITION_TYPE_GROUP  The packed position represents a group.  0x00000000 
int  PACKED_POSITION_TYPE_NULL  The packed position represents a neither/null/no preference.  0x00000002 
long  PACKED_POSITION_VALUE_NULL  The value for a packed position that represents neither/null/no preference.  4294967295  0x00000000ffffffff 
Constants inherited from class android.widget.ListView
Constants inherited from class android.widget.AbsListView
Constants inherited from class android.widget.AdapterView
Constants inherited from class android.view.ViewGroup
Constants inherited from class android.view.View

Public Constructors

            ExpandableListView(Context context)
            ExpandableListView(Context context, AttributeSet attrs)
            ExpandableListView(Context context, AttributeSet attrs, int defStyle)

Public Methods

          boolean  collapseGroup(int groupPos)
Collapse a group in the grouped list view
          boolean  expandGroup(int groupPos)
Expand a group in the grouped list view
          ListAdapter  getAdapter()
This method should not be used, use getExpandableListAdapter().
          ExpandableListAdapter  getExpandableListAdapter()
Gets the adapter that provides data to this view.
          long  getExpandableListPosition(int flatListPosition)
Converts a flat list position (the raw position of an item (child or group) in the list) to an group and/or child position (represented in a packed position).
          int  getFlatListPosition(long packedPosition)
Converts a group and/or child position to a flat list position.
      static    int  getPackedPositionChild(long packedPosition)
Gets the child position from a packed position that is of PACKED_POSITION_TYPE_CHILD type (use getPackedPositionType(long)).
      static    long  getPackedPositionForChild(int groupPosition, int childPosition)
Returns the packed position representation of a child's position.
      static    long  getPackedPositionForGroup(int groupPosition)
Returns the packed position representation of a group's position.
      static    int  getPackedPositionGroup(long packedPosition)
Gets the group position from a packed position.
      static    int  getPackedPositionType(long packedPosition)
Gets the type of a packed position.
          long  getSelectedId()
Gets the ID of the currently selected group or child.
          long  getSelectedPosition()
Gets the position of the currently selected group or child (along with its type).
          boolean  isGroupExpanded(int groupPosition)
Whether the given group is currently expanded.
          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  performItemClick(View v, int position, long id)
Call the OnItemClickListener, if it is defined.
          void  setAdapter(ExpandableListAdapter adapter)
Sets the adapter that provides data to this view.
          void  setAdapter(ListAdapter adapter)
This overloaded method should not be used, instead use setAdapter(ExpandableListAdapter).
          void  setChildDivider(Drawable childDivider)
Sets the drawable that will be drawn adjacent to every child in the list.
          void  setChildIndicator(Drawable childIndicator)
Sets the indicator to be drawn next to a child.
          void  setChildIndicatorBounds(int left, int right)
Sets the drawing bounds for the child indicator.
          void  setGroupIndicator(Drawable groupIndicator)
Sets the indicator to be drawn next to a group.
          void  setIndicatorBounds(int left, int right)
Sets the drawing bounds for the indicators (at minimum, the group indicator is affected by this; the child indicator is affected by this if the child indicator bounds are set to inherit).
          void  setOnChildClickListener(ExpandableListView.OnChildClickListener onChildClickListener)
          void  setOnGroupClickListener(ExpandableListView.OnGroupClickListener onGroupClickListener)
          void  setOnGroupCollapseListener(ExpandableListView.OnGroupCollapseListener onGroupCollapseListener)
          void  setOnGroupExpandListener(ExpandableListView.OnGroupExpandListener onGroupExpandListener)
          void  setOnItemClickListener(AdapterView.OnItemClickListener l)
Register a callback to be invoked when an item has been clicked and the caller prefers to receive a ListView-style position instead of a group and/or child position.
          boolean  setSelectedChild(int groupPosition, int childPosition, boolean shouldExpandGroup)
Sets the selection to the specified child.
          void  setSelectedGroup(int groupPosition)
Sets the selection to the specified group.

Protected Methods

          void  dispatchDraw(Canvas canvas)
Called by draw to draw the child views.
Methods inherited from class android.widget.ListView
Methods inherited from class android.widget.AbsListView
Methods inherited from class android.widget.AdapterView
Methods inherited from class android.view.ViewGroup
Methods inherited from class android.view.View
Methods inherited from class java.lang.Object
Methods inherited from interface android.graphics.drawable.Drawable.Callback
Methods inherited from interface android.text.TextWatcher
Methods inherited from interface android.view.KeyEvent.Callback
Methods inherited from interface android.view.ViewManager
Methods inherited from interface android.view.ViewParent
Methods inherited from interface android.view.ViewTreeObserver.OnGlobalLayoutListener
Methods inherited from interface android.view.ViewTreeObserver.OnTouchModeChangeListener
Methods inherited from interface android.widget.Filter.FilterListener

Details

XML Attributes

android:childDivider

Drawable or color that is used as a divider for children. (It will drawn below and above child items.) The height of this will be the same as the height of the normal list item divider.

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 childDivider.

Related Methods

android:childIndicator

Indicator shown beside the child View. This can be a stateful Drawable.

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 childIndicator.

Related Methods

android:childIndicatorLeft

The left bound for a child's indicator.

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), db (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 childIndicatorLeft.

Related Methods

android:childIndicatorRight

The right bound for a child's indicator.

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), db (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 childIndicatorRight.

Related Methods

android:groupIndicator

Indicator shown beside the group View. This can be a stateful Drawable.

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 groupIndicator.

Related Methods

android:indicatorLeft

The left bound for an item's indicator. To specify a left bound specific to children, use childIndicatorLeft.

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), db (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 indicatorLeft.

Related Methods

android:indicatorRight

The right bound for an item's indicator. To specify a right bound specific to children, use childIndicatorRight.

Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), db (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 indicatorRight.

Related Methods

Constants

public static final int CHILD_INDICATOR_INHERIT

Denotes when a child indicator should inherit this bound from the generic indicator bounds
Constant Value: -1 (0xffffffff)

public static final int PACKED_POSITION_TYPE_CHILD

The packed position represents a child.
Constant Value: 1 (0x00000001)

public static final int PACKED_POSITION_TYPE_GROUP

The packed position represents a group.
Constant Value: 0 (0x00000000)

public static final int PACKED_POSITION_TYPE_NULL

The packed position represents a neither/null/no preference.
Constant Value: 2 (0x00000002)

public static final long PACKED_POSITION_VALUE_NULL

The value for a packed position that represents neither/null/no preference. This value is not otherwise possible since a group type (first bit 0) should not have a child position filled.
Constant Value: 4294967295 (0x00000000ffffffff)

Public Constructors

public ExpandableListView(Context context)

public ExpandableListView(Context context, AttributeSet attrs)

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

Public Methods

public boolean collapseGroup(int groupPos)

Collapse a group in the grouped list view

Parameters

groupPos position of the group to collapse

Returns

  • True if the group was collapsed, false otherwise (if the group was already collapsed, this will return false)

public boolean expandGroup(int groupPos)

Expand a group in the grouped list view

Parameters

groupPos the group to be expanded

Returns

  • True if the group was expanded, false otherwise (if the group was already expanded, this will return false)

public ListAdapter getAdapter()

This method should not be used, use getExpandableListAdapter().

Returns

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

public ExpandableListAdapter getExpandableListAdapter()

Gets the adapter that provides data to this view.

Returns

  • The adapter that provides data to this view.

public long getExpandableListPosition(int flatListPosition)

Converts a flat list position (the raw position of an item (child or group) in the list) to an group and/or child position (represented in a packed position). This is useful in situations where the caller needs to use the underlying ListView's methods. Use getPackedPositionType(long) , getPackedPositionChild(long), getPackedPositionGroup(long) to unpack.

Parameters

flatListPosition The flat list position to be converted.

Returns

  • The group and/or child position for the given flat list position in packed position representation.

public int getFlatListPosition(long packedPosition)

Converts a group and/or child position to a flat list position. This is useful in situations where the caller needs to use the underlying ListView's methods.

Parameters

packedPosition The group and/or child positions to be converted in packed position representation. Use getPackedPositionForChild(int, int) or getPackedPositionForGroup(int).

Returns

  • The flat list position for the given child or group.

public static int getPackedPositionChild(long packedPosition)

Gets the child position from a packed position that is of PACKED_POSITION_TYPE_CHILD type (use getPackedPositionType(long)). To get the group that this child belongs to, use getPackedPositionGroup(long). See getPackedPositionForChild(int, int).

Parameters

packedPosition The packed position from which the child position will be returned.

Returns

  • The child position portion of the packed position. If this does not contain a child, returns -1.

public static long getPackedPositionForChild(int groupPosition, int childPosition)

Returns the packed position representation of a child's position.

In general, a packed position should be used in situations where the position given to/returned from an ExpandableListAdapter or ExpandableListView method can either be a child or group. The two positions are packed into a single long which can be unpacked using getPackedPositionChild(long), getPackedPositionGroup(long), and getPackedPositionType(long).

Parameters

groupPosition The child's parent group's position.
childPosition The child position within the group.

Returns

  • The packed position representation of the child (and parent group).

public static long getPackedPositionForGroup(int groupPosition)

Returns the packed position representation of a group's position. See getPackedPositionForChild(int, int).

Parameters

groupPosition The child's parent group's position.

Returns

  • The packed position representation of the group.

public static int getPackedPositionGroup(long packedPosition)

Gets the group position from a packed position. See getPackedPositionForChild(int, int).

Parameters

packedPosition The packed position from which the group position will be returned.

Returns

  • The group position portion of the packed position. If this does not contain a group, returns -1.

public static int getPackedPositionType(long packedPosition)

Gets the type of a packed position. See getPackedPositionForChild(int, int).

Parameters

packedPosition The packed position for which to return the type.

Returns

public long getSelectedId()

Gets the ID of the currently selected group or child. Can return -1 if no selection.

Returns

  • The ID of the currently selected group or child. -1 if no selection.

public long getSelectedPosition()

Gets the position of the currently selected group or child (along with its type). Can return PACKED_POSITION_VALUE_NULL if no selection.

Returns

  • A packed position containing the currently selected group or child's position and type. #PACKED_POSITION_VALUE_NULL if no selection.

public boolean isGroupExpanded(int groupPosition)

Whether the given group is currently expanded.

Parameters

groupPosition The group to check.

Returns

  • Whether the group is currently expanded.

public void onRestoreInstanceState(Parcelable state)

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()

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 performItemClick(View v, int position, long id)

Call the OnItemClickListener, if it is defined.

Parameters

v 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 void setAdapter(ExpandableListAdapter adapter)

Sets the adapter that provides data to this view.

Parameters

adapter The adapter that provides data to this view.

public void setAdapter(ListAdapter adapter)

This overloaded method should not be used, instead use setAdapter(ExpandableListAdapter).

Sets the data behind this ListView. The adapter passed to this method may be wrapped by a WrapperListAdapter, depending on the ListView features currently in use. For instance, adding headers and/or footers will cause the adapter to be wrapped.

Parameters

adapter The ListAdapter which is responsible for maintaining the data backing this list and for producing a view to represent an item in that data set.

public void setChildDivider(Drawable childDivider)

Sets the drawable that will be drawn adjacent to every child in the list. This will be drawn using the same height as the normal divider (setDivider(Drawable)) or if it does not have an intrinsic height, the height set by setDividerHeight(int).

Parameters

childDivider The drawable to use.

public void setChildIndicator(Drawable childIndicator)

Sets the indicator to be drawn next to a child.

Parameters

childIndicator The drawable to be used as an indicator. If the child is the last child for a group, the state state_last will be set.

public void setChildIndicatorBounds(int left, int right)

Sets the drawing bounds for the child indicator. For either, you can specify CHILD_INDICATOR_INHERIT to use inherit from the general indicator's bounds.

Parameters

left The left position (relative to the left bounds of this View) to start drawing the indicator.
right The right position (relative to the left bounds of this View) to end the drawing of the indicator.

public void setGroupIndicator(Drawable groupIndicator)

Sets the indicator to be drawn next to a group.

Parameters

groupIndicator The drawable to be used as an indicator. If the group is empty, the state state_empty will be set. If the group is expanded, the state state_expanded will be set.

public void setIndicatorBounds(int left, int right)

Sets the drawing bounds for the indicators (at minimum, the group indicator is affected by this; the child indicator is affected by this if the child indicator bounds are set to inherit).

Parameters

left The left position (relative to the left bounds of this View) to start drawing the indicator.
right The right position (relative to the left bounds of this View) to end the drawing of the indicator.

public void setOnChildClickListener(ExpandableListView.OnChildClickListener onChildClickListener)

public void setOnGroupClickListener(ExpandableListView.OnGroupClickListener onGroupClickListener)

public void setOnGroupCollapseListener(ExpandableListView.OnGroupCollapseListener onGroupCollapseListener)

public void setOnGroupExpandListener(ExpandableListView.OnGroupExpandListener onGroupExpandListener)

public void setOnItemClickListener(AdapterView.OnItemClickListener l)

Register a callback to be invoked when an item has been clicked and the caller prefers to receive a ListView-style position instead of a group and/or child position. In most cases, the caller should use setOnGroupClickListener(ExpandableListView.OnGroupClickListener) and/or setOnChildClickListener(ExpandableListView.OnChildClickListener).

Register a callback to be invoked when an item in this AdapterView has been clicked.

Parameters

l The callback that will be invoked.

public boolean setSelectedChild(int groupPosition, int childPosition, boolean shouldExpandGroup)

Sets the selection to the specified child. If the child is in a collapsed group, the group will only be expanded and child subsequently selected if shouldExpandGroup is set to true, otherwise the method will return false.

Parameters

groupPosition The position of the group that contains the child.
childPosition The position of the child within the group.
shouldExpandGroup Whether the child's group should be expanded if it is collapsed.

Returns

  • Whether the selection was successfully set on the child.

public void setSelectedGroup(int groupPosition)

Sets the selection to the specified group.

Parameters

groupPosition The position of the group that should be selected.

Protected Methods

protected void dispatchDraw(Canvas canvas)

Called by draw to draw the child views. This may be overridden by derived classes to gain control just before its children are drawn (but after its own view has been drawn).

Parameters

canvas the canvas on which to draw the view
Copyright 2007 Google Inc. Build 119366-119366 - 19 Nov 2008 16:04