Package icyllis.modernui.widget

# Interface ExpandableListAdapter

All Known Implementing Classes:
  `BaseExpandableListAdapter`

public interface ExpandableListAdapter
An adapter that links a `ExpandableListView` with the underlying data. The implementation of this interface will provide access to the data of the children (categorized by groups), and also instantiate `View`s for children and groups.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `areAllItemsEnabled()`
  `Object`
  `getChild(int groupPosition, int childPosition)`
  Gets the data associated with the given child within the given group.
  `long`
  `getChildId(int groupPosition, int childPosition)`
  Gets the ID for the given child within the given group.
  `int`
  `getChildrenCount(int groupPosition)`
  Gets the number of children in a specified group.
  `View`
  `getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent)`
  Gets a View that displays the data for the given child within the given group.
  `long`
  `getCombinedChildId(long groupId, long childId)`
  Gets an ID for a child that is unique across any item (either group or child) that is in this list.
  `long`
  `getCombinedGroupId(long groupId)`
  Gets an ID for a group that is unique across any item (either group or child) that is in this list.
  `Object`
  `getGroup(int groupPosition)`
  Gets the data associated with the given group.
  `int`
  `getGroupCount()`
  Gets the number of groups.
  `long`
  `getGroupId(int groupPosition)`
  Gets the ID for the group at the given position.
  `View`
  `getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent)`
  Gets a View that displays the given group.
  `boolean`
  `hasStableIds()`
  Indicates whether the child and group IDs are stable across changes to the underlying data.
  `boolean`
  `isChildSelectable(int groupPosition, int childPosition)`
  Whether the child at the specified position is selectable.
  `boolean`
  `isEmpty()`
  `void`
  `onGroupCollapsed(int groupPosition)`
  Called when a group is collapsed.
  `void`
  `onGroupExpanded(int groupPosition)`
  Called when a group is expanded.
  `void`
  `registerDataSetObserver(DataSetObserver observer)`
  `void`
  `unregisterDataSetObserver(DataSetObserver observer)`

- ## Method Details

  - ### registerDataSetObserver

    void registerDataSetObserver(DataSetObserver observer)
    See Also:
      - `Adapter.registerDataSetObserver(DataSetObserver)`

  - ### unregisterDataSetObserver

    void unregisterDataSetObserver(DataSetObserver observer)
    See Also:
      - `Adapter.unregisterDataSetObserver(DataSetObserver)`

  - ### getGroupCount

    int getGroupCount()
    Gets the number of groups.
    Returns:
      the number of groups

  - ### getChildrenCount

    int getChildrenCount(int groupPosition)
    Gets the number of children in a specified group.
    Parameters:
      `groupPosition` - the position of the group for which the children count should be returned
    Returns:
      the children count in the specified group

  - ### getGroup

    Object getGroup(int groupPosition)
    Gets the data associated with the given group.
    Parameters:
      `groupPosition` - the position of the group
    Returns:
      the data child for the specified group

  - ### getChild

    Object getChild(int groupPosition, int childPosition)
    Gets the data associated with the given child within the given group.
    Parameters:
      `groupPosition` - the position of the group that the child resides in
      `childPosition` - the position of the child with respect to other children in the group
    Returns:
      the data of the child

  - ### getGroupId

    long getGroupId(int groupPosition)
    Gets the ID for the group at the given position. This group ID must be unique across groups. The combined ID (see `getCombinedGroupId(long)`) must be unique across ALL items (groups and all children).
    Parameters:
      `groupPosition` - the position of the group for which the ID is wanted
    Returns:
      the ID associated with the group

  - ### getChildId

    long getChildId(int groupPosition, int childPosition)
    Gets the ID for the given child within the given group. This ID must be unique across all children within the group. The combined ID (see `getCombinedChildId(long, long)`) must be unique across ALL items (groups and all children).
    Parameters:
      `groupPosition` - the position of the group that contains the child
      `childPosition` - the position of the child within the group for which the ID is wanted
    Returns:
      the ID associated with the child

  - ### hasStableIds

    boolean hasStableIds()
    Indicates whether the child and group IDs are stable across changes to the underlying data.
    Returns:
      whether or not the same ID always refers to the same object
    See Also:
      - `Adapter.hasStableIds()`

  - ### getGroupView

    View getGroupView(int groupPosition, boolean isExpanded, @Nullable View convertView, @NonNull ViewGroup parent)
    Gets a View that displays the given group. This View is only for the group--the Views for the group's children will be fetched using `getChildView(int, int, boolean, View, ViewGroup)`.
    Parameters:
      `groupPosition` - the position of the group for which the View is returned
      `isExpanded` - whether the group is expanded or collapsed
      `convertView` - the old view to reuse, if possible. You should check that this view is non-null and of an appropriate type before using. If it is not possible to convert this view to display the correct data, this method can create a new view. It is not guaranteed that the convertView will have been previously created by `getGroupView(int, boolean, View, ViewGroup)`.
      `parent` - the parent that this view will eventually be attached to
    Returns:
      the View corresponding to the group at the specified position

  - ### getChildView

    View getChildView(int groupPosition, int childPosition, boolean isLastChild, @Nullable View convertView, @NonNull ViewGroup parent)
    Gets a View that displays the data for the given child within the given group.
    Parameters:
      `groupPosition` - the position of the group that contains the child
      `childPosition` - the position of the child (for which the View is returned) within the group
      `isLastChild` - Whether the child is the last child within the group
      `convertView` - the old view to reuse, if possible. You should check that this view is non-null and of an appropriate type before using. If it is not possible to convert this view to display the correct data, this method can create a new view. It is not guaranteed that the convertView will have been previously created by `getChildView(int, int, boolean, View, ViewGroup)`.
      `parent` - the parent that this view will eventually be attached to
    Returns:
      the View corresponding to the child at the specified position

  - ### isChildSelectable

    boolean isChildSelectable(int groupPosition, int childPosition)
    Whether the child at the specified position is selectable.
    Parameters:
      `groupPosition` - the position of the group that contains the child
      `childPosition` - the position of the child within the group
    Returns:
      whether the child is selectable.

  - ### areAllItemsEnabled

    boolean areAllItemsEnabled()
    See Also:
      - `ListAdapter.areAllItemsEnabled()`

  - ### isEmpty

    boolean isEmpty()
    See Also:
      - `Adapter.isEmpty()`

  - ### onGroupExpanded

    void onGroupExpanded(int groupPosition)
    Called when a group is expanded.
    Parameters:
      `groupPosition` - The group being expanded.

  - ### onGroupCollapsed

    void onGroupCollapsed(int groupPosition)
    Called when a group is collapsed.
    Parameters:
      `groupPosition` - The group being collapsed.

  - ### getCombinedChildId

    long getCombinedChildId(long groupId, long childId)
    Gets an ID for a child that is unique across any item (either group or child) that is in this list. Expandable lists require each item (group or child) to have a unique ID among all children and groups in the list. This method is responsible for returning that unique ID given a child's ID and its group's ID. Furthermore, if `hasStableIds()` is true, the returned ID must be stable as well.
    Parameters:
      `groupId` - The ID of the group that contains this child.
      `childId` - The ID of the child.
    Returns:
      The unique (and possibly stable) ID of the child across all groups and children in this list.

  - ### getCombinedGroupId

    long getCombinedGroupId(long groupId)
    Gets an ID for a group that is unique across any item (either group or child) that is in this list. Expandable lists require each item (group or child) to have a unique ID among all children and groups in the list. This method is responsible for returning that unique ID given a group's ID. Furthermore, if `hasStableIds()` is true, the returned ID must be stable as well.
    Parameters:
      `groupId` - The ID of the group
    Returns:
      The unique (and possibly stable) ID of the group across all groups and children in this list.