Package icyllis.modernui.widget

# Class HeaderViewListAdapter

java.lang.Object
icyllis.modernui.widget.HeaderViewListAdapter

All Implemented Interfaces:
  `Adapter`, `Filterable`, `ListAdapter`, `WrapperListAdapter`

public class HeaderViewListAdapter extends Object implements WrapperListAdapter, Filterable
ListAdapter used when a ListView has header views. This ListAdapter wraps another one and also keeps track of the header views and their associated data objects.

This is intended as a base class; you will probably not need to use this class directly in your own code.

- ## Field Summary

  ### Fields inherited from interface icyllis.modernui.widget.Adapter

  `IGNORE_ITEM_VIEW_TYPE, NO_SELECTION`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `HeaderViewListAdapter(ArrayList<ListView.FixedViewInfo> headerViewInfos, ArrayList<ListView.FixedViewInfo> footerViewInfos, ListAdapter adapter)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `areAllItemsEnabled()`
  Indicates whether all the items in this adapter are enabled.
  `int`
  `getCount()`
  How many items are in the data set represented by this Adapter.
  `Filter`
  `getFilter()`
  Returns a filter that can be used to constrain data with a filtering pattern.
  `int`
  `getFootersCount()`
  `int`
  `getHeadersCount()`
  `Object`
  `getItem(int position)`
  Get the data item associated with the specified position in the data set.
  `long`
  `getItemId(int position)`
  Get the row id associated with the specified position in the list.
  `int`
  `getItemViewType(int position)`
  Get the type of View that will be created by `Adapter.getView(int, icyllis.modernui.view.View, icyllis.modernui.view.ViewGroup)` for the specified item.
  `View`
  `getView(int position, View convertView, ViewGroup parent)`
  Get a View that displays the data at the specified position in the data set.
  `int`
  `getViewTypeCount()`
  Returns the number of types of Views that will be created by `Adapter.getView(int, icyllis.modernui.view.View, icyllis.modernui.view.ViewGroup)`.
  `ListAdapter`
  `getWrappedAdapter()`
  Returns the adapter wrapped by this list adapter.
  `boolean`
  `hasStableIds()`
  Indicates whether the item ids are stable across changes to the underlying data.
  `boolean`
  `isEmpty()`
  `boolean`
  `isEnabled(int position)`
  Returns true if the item at the specified position is not a separator.
  `void`
  `registerDataSetObserver(DataSetObserver observer)`
  Register an observer that is called when changes happen to the data used by this adapter.
  `boolean`
  `removeFooter(View v)`
  `boolean`
  `removeHeader(View v)`
  `void`
  `unregisterDataSetObserver(DataSetObserver observer)`
  Unregister an observer that has previously been registered with this adapter via `Adapter.registerDataSetObserver(icyllis.modernui.util.DataSetObserver)`.

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

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

- ## Constructor Details

  - ### HeaderViewListAdapter

    public HeaderViewListAdapter(@Nullable ArrayList<ListView.FixedViewInfo> headerViewInfos, @Nullable ArrayList<ListView.FixedViewInfo> footerViewInfos, @Nonnull ListAdapter adapter)

- ## Method Details

  - ### getHeadersCount

    public int getHeadersCount()

  - ### getFootersCount

    public int getFootersCount()

  - ### isEmpty

    public boolean isEmpty()
    Specified by:
      `isEmpty` in interface `Adapter`
    Returns:
      true if this adapter doesn't contain any data. This is used to determine whether the empty view should be displayed. A typical implementation will return getCount() == 0 but since getCount() includes the headers and footers, specialized adapters might want a different behavior.

  - ### removeHeader

    public boolean removeHeader(@Nonnull View v)

  - ### removeFooter

    public boolean removeFooter(@Nonnull View v)

  - ### getCount

    public int getCount()
    Description copied from interface: `Adapter`
    How many items are in the data set represented by this Adapter.
    Specified by:
      `getCount` in interface `Adapter`
    Returns:
      Count of items.

  - ### areAllItemsEnabled

    public boolean areAllItemsEnabled()
    Description copied from interface: `ListAdapter`
    Indicates whether all the items in this adapter are enabled. If the value returned by this method changes over time, there is no guarantee it will take effect. If true, it means all items are selectable and clickable (there is no separator.)
    Specified by:
      `areAllItemsEnabled` in interface `ListAdapter`
    Returns:
      True if all items are enabled, false otherwise.
    See Also:
      - `ListAdapter.isEnabled(int)`

  - ### isEnabled

    public boolean isEnabled(int position)
    Description copied from interface: `ListAdapter`
    Returns true if the item at the specified position is not a separator. (A separator is a non-selectable, non-clickable item).

    The result is unspecified if position is invalid. An `ArrayIndexOutOfBoundsException` should be thrown in that case for fast failure.

    Specified by:
      `isEnabled` in interface `ListAdapter`
    Parameters:
      `position` - Index of the item
    Returns:
      True if the item is not a separator
    See Also:
      - `ListAdapter.areAllItemsEnabled()`

  - ### getItem

    public Object getItem(int position)
    Description copied from interface: `Adapter`
    Get the data item associated with the specified position in the data set.
    Specified by:
      `getItem` in interface `Adapter`
    Parameters:
      `position` - Position of the item whose data we want within the adapter's data set.
    Returns:
      The data at the specified position, may be null.

  - ### getItemId

    public long getItemId(int position)
    Description copied from interface: `Adapter`
    Get the row id associated with the specified position in the list.
    Specified by:
      `getItemId` in interface `Adapter`
    Parameters:
      `position` - The position of the item within the adapter's data set whose row id we want.
    Returns:
      The id of the item at the specified position.

  - ### hasStableIds

    public boolean hasStableIds()
    Description copied from interface: `Adapter`
    Indicates whether the item ids are stable across changes to the underlying data.
    Specified by:
      `hasStableIds` in interface `Adapter`
    Returns:
      True if the same id always refers to the same object.

  - ### getView

    @Nonnull public View getView(int position, @Nullable View convertView, @Nonnull ViewGroup parent)
    Description copied from interface: `Adapter`
    Get a View that displays the data at the specified position in the data set. You can create a View manually.

    This method should not return null unless the item count is zero.

    Specified by:
      `getView` in interface `Adapter`
    Parameters:
      `position` - The position of the item within the adapter's data set of the item whose view we want.
      `convertView` - The old view to reuse, if possible. Note: 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. Heterogeneous lists can specify their number of view types, so that this View is always of the right type (see `Adapter.getViewTypeCount()` and `Adapter.getItemViewType(int)`).
      `parent` - The parent that this view will eventually be attached to
    Returns:
      A View corresponding to the data at the specified position.

  - ### getItemViewType

    public int getItemViewType(int position)
    Description copied from interface: `Adapter`
    Get the type of View that will be created by `Adapter.getView(int, icyllis.modernui.view.View, icyllis.modernui.view.ViewGroup)` for the specified item.
    Specified by:
      `getItemViewType` in interface `Adapter`
    Parameters:
      `position` - The position of the item within the adapter's data set whose view type we want.
    Returns:
      An integer representing the type of View. Two views should share the same type if one can be converted to the other in `Adapter.getView(int, icyllis.modernui.view.View, icyllis.modernui.view.ViewGroup)`. Note: Integers must be in the range 0 to `Adapter.getViewTypeCount()` - 1. `Adapter.IGNORE_ITEM_VIEW_TYPE` can also be returned.
    See Also:
      - `Adapter.IGNORE_ITEM_VIEW_TYPE`

  - ### getViewTypeCount

    public int getViewTypeCount()
    Description copied from interface: `Adapter`

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

    This method will only be called when the adapter is set on the `AdapterView`.

    Specified by:
      `getViewTypeCount` in interface `Adapter`
    Returns:
      The number of types of Views that will be created by this adapter

  - ### registerDataSetObserver

    public void registerDataSetObserver(@Nonnull DataSetObserver observer)
    Description copied from interface: `Adapter`
    Register an observer that is called when changes happen to the data used by this adapter.
    Specified by:
      `registerDataSetObserver` in interface `Adapter`
    Parameters:
      `observer` - the object that gets notified when the data set changes.

  - ### unregisterDataSetObserver

    public void unregisterDataSetObserver(@Nonnull DataSetObserver observer)
    Description copied from interface: `Adapter`
    Unregister an observer that has previously been registered with this adapter via `Adapter.registerDataSetObserver(icyllis.modernui.util.DataSetObserver)`.
    Specified by:
      `unregisterDataSetObserver` in interface `Adapter`
    Parameters:
      `observer` - the object to unregister.

  - ### getFilter

    public Filter getFilter()
    Description copied from interface: `Filterable`

    Returns a filter that can be used to constrain data with a filtering pattern.

    This method is usually implemented by `Adapter` classes.

    Specified by:
      `getFilter` in interface `Filterable`
    Returns:
      a filter used to constrain data

  - ### getWrappedAdapter

    public ListAdapter getWrappedAdapter()
    Description copied from interface: `WrapperListAdapter`
    Returns the adapter wrapped by this list adapter.
    Specified by:
      `getWrappedAdapter` in interface `WrapperListAdapter`
    Returns:
      The `ListAdapter` wrapped by this adapter.