Package icyllis.modernui.widget

# Interface Adapter

All Known Subinterfaces:
  `ListAdapter`, `SpinnerAdapter`, `WrapperListAdapter`

All Known Implementing Classes:
  `ArrayAdapter`, `BaseAdapter`, `HeaderViewListAdapter`, `MenuAdapter`

public interface Adapter
An Adapter object acts as a bridge between an `AdapterView` and the underlying data for that view. The Adapter provides access to the data items. The Adapter is also responsible for making a `View` for each item in the data set.

See Also:
  - `ArrayAdapter`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `IGNORE_ITEM_VIEW_TYPE`
  An item view type that causes the `AdapterView` to ignore the item view.
  `static final int`
  `NO_SELECTION`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `getCount()`
  How many items are in the data set represented by this Adapter.
  `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 `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 `getView(int, icyllis.modernui.view.View, icyllis.modernui.view.ViewGroup)`.
  `boolean`
  `hasStableIds()`
  Indicates whether the item ids are stable across changes to the underlying data.
  `boolean`
  `isEmpty()`
  `void`
  `registerDataSetObserver(DataSetObserver observer)`
  Register an observer that is called when changes happen to the data used by this adapter.
  `void`
  `unregisterDataSetObserver(DataSetObserver observer)`
  Unregister an observer that has previously been registered with this adapter via `registerDataSetObserver(icyllis.modernui.util.DataSetObserver)`.

- ## Field Details

  - ### IGNORE_ITEM_VIEW_TYPE

    static final int IGNORE_ITEM_VIEW_TYPE
    An item view type that causes the `AdapterView` to ignore the item view. For example, this can be used if the client does not want a particular view to be given for conversion in `getView(int, View, ViewGroup)`.
    See Also:
      - `getItemViewType(int)`
      - `getViewTypeCount()`
      - Constant Field Values

  - ### NO_SELECTION

    static final int NO_SELECTION
    See Also:
      - Constant Field Values

- ## Method Details

  - ### registerDataSetObserver

    void registerDataSetObserver(@NonNull DataSetObserver observer)
    Register an observer that is called when changes happen to the data used by this adapter.
    Parameters:
      `observer` - the object that gets notified when the data set changes.

  - ### unregisterDataSetObserver

    void unregisterDataSetObserver(@NonNull DataSetObserver observer)
    Unregister an observer that has previously been registered with this adapter via `registerDataSetObserver(icyllis.modernui.util.DataSetObserver)`.
    Parameters:
      `observer` - the object to unregister.

  - ### getCount

    int getCount()
    How many items are in the data set represented by this Adapter.
    Returns:
      Count of items.

  - ### getItem

    Object getItem(int position)
    Get the data item associated with the specified position in the data set.
    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

    long getItemId(int position)
    Get the row id associated with the specified position in the list.
    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

    boolean hasStableIds()
    Indicates whether the item ids are stable across changes to the underlying data.
    Returns:
      True if the same id always refers to the same object.

  - ### getView

    View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent)
    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.

    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 `getViewTypeCount()` and `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

    int getItemViewType(int position)
    Get the type of View that will be created by `getView(int, icyllis.modernui.view.View, icyllis.modernui.view.ViewGroup)` for the specified item.
    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 `getView(int, icyllis.modernui.view.View, icyllis.modernui.view.ViewGroup)`. Note: Integers must be in the range 0 to `getViewTypeCount()` - 1. `IGNORE_ITEM_VIEW_TYPE` can also be returned.
    See Also:
      - `IGNORE_ITEM_VIEW_TYPE`

  - ### getViewTypeCount

    int getViewTypeCount()

    Returns the number of types of Views that will be created by `getView(int, icyllis.modernui.view.View, icyllis.modernui.view.ViewGroup)`. Each type represents a set of views that can be converted in `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`.

    Returns:
      The number of types of Views that will be created by this adapter

  - ### isEmpty

    boolean isEmpty()
    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.