Build 1.0_r1(from source)

android.widget
Class ExpandableListConnector

java.lang.Object
  extended by android.widget.BaseAdapter
      extended by android.widget.ExpandableListConnector
All Implemented Interfaces:
Adapter, Filterable, ListAdapter, SpinnerAdapter

 class ExpandableListConnector
extends BaseAdapter
implements Filterable

A BaseAdapter that provides data/Views in an expandable list (offers features such as collapsing/expanding groups containing children). By itself, this adapter has no data and is a connector to a ExpandableListAdapter which provides the data.

Internally, this connector translates the flat list position that the ListAdapter expects to/from group and child positions that the ExpandableListAdapter expects.


Nested Class Summary
(package private) static class ExpandableListConnector.GroupMetadata
          Metadata about an expanded group to help convert from a flat list position to either a) group position for groups, or b) child position for children
protected  class ExpandableListConnector.MyDataSetObserver
           
static class ExpandableListConnector.PositionMetadata
          Data type that contains an expandable list position (can refer to either a group or child) and some extra information regarding referred item (such as where to insert into the flat list, etc.)
 
Field Summary
 
Fields inherited from interface android.widget.Adapter
IGNORE_ITEM_VIEW_TYPE, NO_SELECTION
 
Constructor Summary
ExpandableListConnector(ExpandableListAdapter expandableListAdapter)
          Constructs the connector
 
Method Summary
 boolean areAllItemsEnabled()
          Are all items in this ListAdapter enabled? If yes it means all items are selectable and clickable.
(package private)  boolean collapseGroup(ExpandableListConnector.PositionMetadata posMetadata)
           
(package private)  boolean collapseGroup(int groupPos)
          Collapse a group in the grouped list view
(package private)  boolean expandGroup(ExpandableListConnector.PositionMetadata posMetadata)
           
(package private)  boolean expandGroup(int groupPos)
          Expand a group in the grouped list view
(package private)  ExpandableListAdapter getAdapter()
           
 int getCount()
          How many items are in the data set represented by this Adapter.
(package private)  ArrayList<ExpandableListConnector.GroupMetadata> getExpandedGroupMetadataList()
           
 Filter getFilter()
          Returns a filter that can be used to constrain data with a filtering pattern.
(package private)  ExpandableListConnector.PositionMetadata getFlattenedPos(ExpandableListPosition pos)
          Translates either a group pos or a child pos (+ group it belongs to) to a flat list position.
 Object getItem(int flatListPos)
          Get the data item associated with the specified position in the data set.
 long getItemId(int flatListPos)
          Get the row id associated with the specified position in the list.
 int getItemViewType(int flatListPos)
          Get the type of View that will be created by Adapter.getView(int, android.view.View, android.view.ViewGroup) for the specified item.
(package private)  ExpandableListConnector.PositionMetadata getUnflattenedPos(int flPos)
          Translates a flat list position to either a) group pos if the specified flat list position corresponds to a group, or b) child pos if it corresponds to a child.
 View getView(int flatListPos, 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, android.view.View, android.view.ViewGroup).
 boolean hasStableIds()
          Indicated whether the item ids are stable across changes to the underlying data.
 boolean isEmpty()
           
 boolean isEnabled(int flatListPos)
          Returns true if the item at the specified position is not a separator.
 boolean isGroupExpanded(int groupPosition)
          Whether the given group is currently expanded.
 void setExpandableListAdapter(ExpandableListAdapter expandableListAdapter)
          Point to the ExpandableListAdapter that will give us data/Views
(package private)  void setExpandedGroupMetadataList(ArrayList<ExpandableListConnector.GroupMetadata> expandedGroupMetadataList)
           
 void setMaxExpGroupCount(int maxExpGroupCount)
          Set the maximum number of groups that can be expanded at any given time
 
Methods inherited from class android.widget.BaseAdapter
getDropDownView, notifyDataSetChanged, notifyDataSetInvalidated, registerDataSetObserver, unregisterDataSetObserver
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ExpandableListConnector

public ExpandableListConnector(ExpandableListAdapter expandableListAdapter)
Constructs the connector

Method Detail

setExpandableListAdapter

public void setExpandableListAdapter(ExpandableListAdapter expandableListAdapter)
Point to the ExpandableListAdapter that will give us data/Views

Parameters:
expandableListAdapter - the adapter that supplies us with data/Views

getUnflattenedPos

ExpandableListConnector.PositionMetadata getUnflattenedPos(int flPos)
Translates a flat list position to either a) group pos if the specified flat list position corresponds to a group, or b) child pos if it corresponds to a child. Performs a binary search on the expanded groups list to find the flat list pos if it is an exp group, otherwise finds where the flat list pos fits in between the exp groups.

Parameters:
flPos - the flat list position to be translated
Returns:
the group position or child position of the specified flat list position encompassed in a ExpandableListConnector.PositionMetadata object that contains additional useful info for insertion, etc.

getFlattenedPos

ExpandableListConnector.PositionMetadata getFlattenedPos(ExpandableListPosition pos)
Translates either a group pos or a child pos (+ group it belongs to) to a flat list position. If searching for a child and its group is not expanded, this will return null since the child isn't being shown in the ListView, and hence it has no position.

Parameters:
pos - a ExpandableListPosition representing either a group position or child position
Returns:
the flat list position encompassed in a ExpandableListConnector.PositionMetadata object that contains additional useful info for insertion, etc.

areAllItemsEnabled

public boolean areAllItemsEnabled()
Description copied from interface: ListAdapter
Are all items in this ListAdapter enabled? If yes it means all items are selectable and clickable.

Specified by:
areAllItemsEnabled in interface ListAdapter
Overrides:
areAllItemsEnabled in class BaseAdapter
Returns:
True if all items are enabled

isEnabled

public boolean isEnabled(int flatListPos)
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).

Specified by:
isEnabled in interface ListAdapter
Overrides:
isEnabled in class BaseAdapter
Parameters:
flatListPos - Index of the item
Returns:
True if the item is not a separator

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.

getItem

public Object getItem(int flatListPos)
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:
flatListPos - Position of the item whose data we want within the adapter's data set.
Returns:
The data at the specified position.

getItemId

public long getItemId(int flatListPos)
Description copied from interface: Adapter
Get the row id associated with the specified position in the list.

Specified by:
getItemId in interface Adapter
Parameters:
flatListPos - 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.

getView

public View getView(int flatListPos,
                    View convertView,
                    ViewGroup parent)
Description copied from interface: Adapter
Get a View that displays the data at the specified position in the data set. You can either create a View manually or inflate it from an XML layout file. When the View is inflated, the parent View (GridView, ListView...) will apply default layout parameters unless you use LayoutInflater.inflate(int, android.view.ViewGroup, boolean) to specify a root view and to prevent attachment to the root.

Specified by:
getView in interface Adapter
Parameters:
flatListPos - 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.
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 flatListPos)
Description copied from interface: Adapter
Get the type of View that will be created by Adapter.getView(int, android.view.View, android.view.ViewGroup) for the specified item.

Specified by:
getItemViewType in interface Adapter
Overrides:
getItemViewType in class BaseAdapter
Parameters:
flatListPos - 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, android.view.View, android.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:
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, android.view.View, android.view.ViewGroup). Each type represents a set of views that can be converted in Adapter.getView(int, android.view.View, android.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 when the adapter is set on the the AdapterView.

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

hasStableIds

public boolean hasStableIds()
Description copied from interface: Adapter
Indicated whether the item ids are stable across changes to the underlying data.

Specified by:
hasStableIds in interface Adapter
Overrides:
hasStableIds in class BaseAdapter
Returns:
True if the same id always refers to the same object.

collapseGroup

boolean collapseGroup(int groupPos)
Collapse a group in the grouped list view

Parameters:
groupPos - position of the group to collapse

collapseGroup

boolean collapseGroup(ExpandableListConnector.PositionMetadata posMetadata)

expandGroup

boolean expandGroup(int groupPos)
Expand a group in the grouped list view

Parameters:
groupPos - the group to be expanded

expandGroup

boolean expandGroup(ExpandableListConnector.PositionMetadata posMetadata)

isGroupExpanded

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.

setMaxExpGroupCount

public void setMaxExpGroupCount(int maxExpGroupCount)
Set the maximum number of groups that can be expanded at any given time


getAdapter

ExpandableListAdapter getAdapter()

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

getExpandedGroupMetadataList

ArrayList<ExpandableListConnector.GroupMetadata> getExpandedGroupMetadataList()

setExpandedGroupMetadataList

void setExpandedGroupMetadataList(ArrayList<ExpandableListConnector.GroupMetadata> expandedGroupMetadataList)

isEmpty

public boolean isEmpty()
Specified by:
isEmpty in interface Adapter
Overrides:
isEmpty in class BaseAdapter
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.

Build 1.0_r1(from source)

Please submit a feedback, bug or feature