Package icyllis.modernui.widget

# Class BaseExpandableListAdapter

java.lang.Object
icyllis.modernui.widget.BaseExpandableListAdapter

All Implemented Interfaces:
  `ExpandableListAdapter`, `HeterogeneousExpandableList`

public abstract class BaseExpandableListAdapter extends Object implements ExpandableListAdapter, HeterogeneousExpandableList
Base class for a `ExpandableListAdapter` used to provide data and Views from some data to an expandable list view.

Adapters inheriting this class should verify that the base implementations of `getCombinedChildId(long, long)` and `getCombinedGroupId(long)` are correct in generating unique IDs from the group/children IDs.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `BaseExpandableListAdapter()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `areAllItemsEnabled()`
  `int`
  `getChildType(int groupPosition, int childPosition)`
  Get the type of child View that will be created by `ExpandableListAdapter.getChildView(int, int, boolean, View, ViewGroup)` for the specified child item.
  `int`
  `getChildTypeCount()`
  Returns the number of types of child Views that will be created by `ExpandableListAdapter.getChildView(int, int, boolean, View, ViewGroup)` .
  `long`
  `getCombinedChildId(long groupId, long childId)`
  Override this method if you foresee a clash in IDs based on this scheme:
  `long`
  `getCombinedGroupId(long groupId)`
  Override this method if you foresee a clash in IDs based on this scheme:
  `int`
  `getGroupType(int groupPosition)`
  Get the type of group View that will be created by `ExpandableListAdapter.getGroupView(int, boolean, View, ViewGroup)` .
  `int`
  `getGroupTypeCount()`
  Returns the number of types of group Views that will be created by `ExpandableListAdapter.getGroupView(int, boolean, View, ViewGroup)` .
  `boolean`
  `isEmpty()`
  `void`
  `notifyDataSetChanged()`
  `void`
  `notifyDataSetInvalidated()`
  `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)`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface icyllis.modernui.widget.ExpandableListAdapter

  `getChild, getChildId, getChildrenCount, getChildView, getGroup, getGroupCount, getGroupId, getGroupView, hasStableIds, isChildSelectable`

- ## Constructor Details

  - ### BaseExpandableListAdapter

    public BaseExpandableListAdapter()

- ## Method Details

  - ### registerDataSetObserver

    public void registerDataSetObserver(DataSetObserver observer)
    Specified by:
      `registerDataSetObserver` in interface `ExpandableListAdapter`
    See Also:
      - `Adapter.registerDataSetObserver(DataSetObserver)`

  - ### unregisterDataSetObserver

    public void unregisterDataSetObserver(DataSetObserver observer)
    Specified by:
      `unregisterDataSetObserver` in interface `ExpandableListAdapter`
    See Also:
      - `Adapter.unregisterDataSetObserver(DataSetObserver)`

  - ### notifyDataSetInvalidated

    public void notifyDataSetInvalidated()
    See Also:
      - `DataSetObservable.notifyInvalidated()`

  - ### notifyDataSetChanged

    public void notifyDataSetChanged()
    See Also:
      - `DataSetObservable.notifyChanged()`

  - ### areAllItemsEnabled

    public boolean areAllItemsEnabled()
    Specified by:
      `areAllItemsEnabled` in interface `ExpandableListAdapter`
    See Also:
      - `ListAdapter.areAllItemsEnabled()`

  - ### onGroupCollapsed

    public void onGroupCollapsed(int groupPosition)
    Description copied from interface: `ExpandableListAdapter`
    Called when a group is collapsed.
    Specified by:
      `onGroupCollapsed` in interface `ExpandableListAdapter`
    Parameters:
      `groupPosition` - The group being collapsed.

  - ### onGroupExpanded

    public void onGroupExpanded(int groupPosition)
    Description copied from interface: `ExpandableListAdapter`
    Called when a group is expanded.
    Specified by:
      `onGroupExpanded` in interface `ExpandableListAdapter`
    Parameters:
      `groupPosition` - The group being expanded.

  - ### getCombinedChildId

    public long getCombinedChildId(long groupId, long childId)
    Override this method if you foresee a clash in IDs based on this scheme:

    Base implementation returns a long:

  - bit 0: Whether this ID points to a child (unset) or group (set), so for this method this bit will be 1.
  - bit 1-31: Lower 31 bits of the groupId
  - bit 32-63: Lower 32 bits of the 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 `ExpandableListAdapter.hasStableIds()` is true, the returned ID must be stable as well.

Specified by:
  `getCombinedChildId` in interface `ExpandableListAdapter`
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

  public long getCombinedGroupId(long groupId)
  Override this method if you foresee a clash in IDs based on this scheme:

  Base implementation returns a long:

- bit 0: Whether this ID points to a child (unset) or group (set), so for this method this bit will be 0.
- bit 1-31: Lower 31 bits of the groupId
- bit 32-63: Lower 32 bits of the childId.

  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 `ExpandableListAdapter.hasStableIds()` is true, the returned ID must be stable as well.

Specified by:
  `getCombinedGroupId` in interface `ExpandableListAdapter`
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.

- ### isEmpty

  public boolean isEmpty()
  Specified by:
    `isEmpty` in interface `ExpandableListAdapter`
  See Also:
    - `Adapter.isEmpty()`

- ### getChildType

  public int getChildType(int groupPosition, int childPosition)
  Get the type of child View that will be created by `ExpandableListAdapter.getChildView(int, int, boolean, View, ViewGroup)` for the specified child item.
  Specified by:
    `getChildType` in interface `HeterogeneousExpandableList`
  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:
    0 for any group or child position, since only one child type count is declared.
  See Also:
    - `Adapter.IGNORE_ITEM_VIEW_TYPE`
    - `HeterogeneousExpandableList.getChildTypeCount()`

- ### getChildTypeCount

  public int getChildTypeCount()

  Returns the number of types of child Views that will be created by `ExpandableListAdapter.getChildView(int, int, boolean, View, ViewGroup)` . Each type represents a set of views that can be converted in `ExpandableListAdapter.getChildView(int, int, boolean, View, ViewGroup)` , for any group. If the adapter always returns the same type of View for all child items, this method should return 1.

  This method will only be called when the adapter is set on the `AdapterView`.
  Specified by:
    `getChildTypeCount` in interface `HeterogeneousExpandableList`
  Returns:
    1 as a default value in BaseExpandableListAdapter.
  See Also:
    - `HeterogeneousExpandableList.getGroupTypeCount()`
    - `HeterogeneousExpandableList.getChildType(int, int)`

- ### getGroupType

  public int getGroupType(int groupPosition)
  Get the type of group View that will be created by `ExpandableListAdapter.getGroupView(int, boolean, View, ViewGroup)` . for the specified group item.
  Specified by:
    `getGroupType` in interface `HeterogeneousExpandableList`
  Parameters:
    `groupPosition` - the position of the group for which the type should be returned.
  Returns:
    0 for any groupPosition, since only one group type count is declared.
  See Also:
    - `Adapter.IGNORE_ITEM_VIEW_TYPE`
    - `HeterogeneousExpandableList.getGroupTypeCount()`

- ### getGroupTypeCount

  public int getGroupTypeCount()

  Returns the number of types of group Views that will be created by `ExpandableListAdapter.getGroupView(int, boolean, View, ViewGroup)` . Each type represents a set of views that can be converted in `ExpandableListAdapter.getGroupView(int, boolean, View, ViewGroup)` . If the adapter always returns the same type of View for all group items, this method should return 1.

  This method will only be called when the adapter is set on the `AdapterView`.
  Specified by:
    `getGroupTypeCount` in interface `HeterogeneousExpandableList`
  Returns:
    1 as a default value in BaseExpandableListAdapter.
  See Also:
    - `HeterogeneousExpandableList.getChildTypeCount()`
    - `HeterogeneousExpandableList.getGroupType(int)`