Added in API level 1

SimpleCursorTreeAdapter


abstract class SimpleCursorTreeAdapter : ResourceCursorTreeAdapter

An easy adapter to map columns from a cursor to TextViews or ImageViews defined in an XML file. You can specify which columns you want, which views you want to display the columns, and the XML file that defines the appearance of these views. Separate XML files for child and groups are possible. Binding occurs in two phases. First, if a android.widget.SimpleCursorTreeAdapter.ViewBinder is available, ViewBinder.setViewValue(android.view.View, android.database.Cursor, int) is invoked. If the returned value is true, binding has occurred. If the returned value is false and the view to bind is a TextView, setViewText(android.widget.TextView,java.lang.String) is invoked. If the returned value is false and the view to bind is an ImageView, setViewImage(android.widget.ImageView,java.lang.String) is invoked. If no appropriate binding can be found, an IllegalStateException is thrown.

Summary

Nested classes
abstract

This class can be used by external clients of SimpleCursorTreeAdapter to bind values from the Cursor to views.

Public constructors
SimpleCursorTreeAdapter(context: Context!, cursor: Cursor!, collapsedGroupLayout: Int, expandedGroupLayout: Int, groupFrom: Array<String!>!, groupTo: IntArray!, childLayout: Int, lastChildLayout: Int, childFrom: Array<String!>!, childTo: IntArray!)

Constructor.

SimpleCursorTreeAdapter(context: Context!, cursor: Cursor!, collapsedGroupLayout: Int, expandedGroupLayout: Int, groupFrom: Array<String!>!, groupTo: IntArray!, childLayout: Int, childFrom: Array<String!>!, childTo: IntArray!)

Constructor.

SimpleCursorTreeAdapter(context: Context!, cursor: Cursor!, groupLayout: Int, groupFrom: Array<String!>!, groupTo: IntArray!, childLayout: Int, childFrom: Array<String!>!, childTo: IntArray!)

Constructor.

Public methods
open SimpleCursorTreeAdapter.ViewBinder!

Returns the ViewBinder used to bind data to views.

open Unit

Sets the binder used to bind data to views.

open Unit
setViewText(v: TextView!, text: String!)

Called by bindView() to set the text for a TextView but only if there is no existing ViewBinder or if the existing ViewBinder cannot handle binding to a TextView.

Protected methods
open Unit
bindChildView(view: View!, context: Context!, cursor: Cursor!, isLastChild: Boolean)

open Unit
bindGroupView(view: View!, context: Context!, cursor: Cursor!, isExpanded: Boolean)

open Unit
setViewImage(v: ImageView!, value: String!)

Called by bindView() to set the image for an ImageView.

Inherited functions
Boolean areAllItemsEnabled()

Int getChildType(groupPosition: Int, childPosition: Int)

Get the type of child View that will be created by android.widget.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 android.widget.ExpandableListAdapter#getChildView(int, int, boolean, View, ViewGroup) . Each type represents a set of views that can be converted in android.widget.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.

Long getCombinedChildId(groupId: Long, childId: Long)

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

  • Long getCombinedGroupId(groupId: Long)

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

  • Int getGroupType(groupPosition: Int)

    Get the type of group View that will be created by android.widget.ExpandableListAdapter#getGroupView(int, boolean, View, ViewGroup) . for the specified group item.

    Int getGroupTypeCount()

    Returns the number of types of group Views that will be created by android.widget.ExpandableListAdapter#getGroupView(int, boolean, View, ViewGroup) . Each type represents a set of views that can be converted in android.widget.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.

    Boolean isEmpty()

    Unit onGroupExpanded(groupPosition: Int)

    Unit registerDataSetObserver(observer: DataSetObserver!)

    Unit unregisterDataSetObserver(observer: DataSetObserver!)

    Unit bindChildView(view: View!, context: Context!, cursor: Cursor!, isLastChild: Boolean)

    Bind an existing view to the child data pointed to by cursor

    Unit bindGroupView(view: View!, context: Context!, cursor: Cursor!, isExpanded: Boolean)

    Bind an existing view to the group data pointed to by cursor.

    Unit changeCursor(cursor: Cursor!)

    String! convertToString(cursor: Cursor!)

    Cursor! getChild(groupPosition: Int, childPosition: Int)

    Long getChildId(groupPosition: Int, childPosition: Int)

    View! getChildView(groupPosition: Int, childPosition: Int, isLastChild: Boolean, convertView: View!, parent: ViewGroup!)

    Int getChildrenCount(groupPosition: Int)

    Cursor! getChildrenCursor(groupCursor: Cursor!)

    Gets the Cursor for the children at the given group. Subclasses must implement this method to return the children data for a particular group.

    If you want to asynchronously query a provider to prevent blocking the UI, it is possible to return null and at a later time call setChildrenCursor(int,android.database.Cursor).

    It is your responsibility to manage this Cursor through the Activity lifecycle. It is a good idea to use Activity.managedQuery which will handle this for you. In some situations, the adapter will deactivate the Cursor on its own, but this will not always be the case, so please ensure the Cursor is properly managed.

    Cursor! getCursor()

    Filter! getFilter()

    FilterQueryProvider! getFilterQueryProvider()

    Cursor! getGroup(groupPosition: Int)

    Int getGroupCount()

    Long getGroupId(groupPosition: Int)

    View! getGroupView(groupPosition: Int, isExpanded: Boolean, convertView: View!, parent: ViewGroup!)

    Boolean hasStableIds()

    Boolean isChildSelectable(groupPosition: Int, childPosition: Int)

    Unit notifyDataSetChanged()

    Unit notifyDataSetChanged(releaseCursors: Boolean)

    Notifies a data set change, but with the option of not releasing any cached cursors.

    Unit notifyDataSetInvalidated()

    Unit onGroupCollapsed(groupPosition: Int)

    Cursor! runQueryOnBackgroundThread(constraint: CharSequence!)

    Unit setChildrenCursor(groupPosition: Int, childrenCursor: Cursor!)

    Sets the children Cursor for a particular group. If there is an existing cursor it will be closed.

    This is useful when asynchronously querying to prevent blocking the UI.

    Unit setFilterQueryProvider(filterQueryProvider: FilterQueryProvider!)

    Unit setGroupCursor(cursor: Cursor!)

    Sets the group Cursor.

    Any! getChild(groupPosition: Int, childPosition: Int)

    Gets the data associated with the given child within the given group.

    Long getChildId(groupPosition: Int, childPosition: Int)

    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).

    View! getChildView(groupPosition: Int, childPosition: Int, isLastChild: Boolean, convertView: View!, parent: ViewGroup!)

    Gets a View that displays the data for the given child within the given group.

    Int getChildrenCount(groupPosition: Int)

    Gets the number of children in a specified group.

    Any! getGroup(groupPosition: Int)

    Gets the data associated with the given group.

    Int getGroupCount()

    Gets the number of groups.

    Long getGroupId(groupPosition: Int)

    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).

    View! getGroupView(groupPosition: Int, isExpanded: Boolean, convertView: View!, parent: ViewGroup!)

    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,android.view.View,android.view.ViewGroup).

    Boolean hasStableIds()

    Indicates whether the child and group IDs are stable across changes to the underlying data.

    Boolean isChildSelectable(groupPosition: Int, childPosition: Int)

    Whether the child at the specified position is selectable.

    View! newChildView(context: Context!, cursor: Cursor!, isLastChild: Boolean, parent: ViewGroup!)

    View! newGroupView(context: Context!, cursor: Cursor!, isExpanded: Boolean, parent: ViewGroup!)

    Public constructors

    SimpleCursorTreeAdapter

    Added in API level 1
    SimpleCursorTreeAdapter(
        context: Context!,
        cursor: Cursor!,
        collapsedGroupLayout: Int,
        expandedGroupLayout: Int,
        groupFrom: Array<String!>!,
        groupTo: IntArray!,
        childLayout: Int,
        lastChildLayout: Int,
        childFrom: Array<String!>!,
        childTo: IntArray!)

    Constructor.

    Parameters
    context Context!: The context where the ExpandableListView associated with this SimpleCursorTreeAdapter is running
    cursor Cursor!: The database cursor
    collapsedGroupLayout Int: The resource identifier of a layout file that defines the views for a collapsed group. The layout file should include at least those named views defined in groupTo.
    expandedGroupLayout Int: The resource identifier of a layout file that defines the views for an expanded group. The layout file should include at least those named views defined in groupTo.
    groupFrom Array<String!>!: A list of column names that will be used to display the data for a group.
    groupTo IntArray!: The group views (from the group layouts) that should display column in the "from" parameter. These should all be TextViews or ImageViews. The first N views in this list are given the values of the first N columns in the from parameter.
    childLayout Int: The resource identifier of a layout file that defines the views for a child (except the last). The layout file should include at least those named views defined in childTo.
    lastChildLayout Int: The resource identifier of a layout file that defines the views for the last child within a group. The layout file should include at least those named views defined in childTo.
    childFrom Array<String!>!: A list of column names that will be used to display the data for a child.
    childTo IntArray!: The child views (from the child layouts) that should display column in the "from" parameter. These should all be TextViews or ImageViews. The first N views in this list are given the values of the first N columns in the from parameter.

    SimpleCursorTreeAdapter

    Added in API level 1
    SimpleCursorTreeAdapter(
        context: Context!,
        cursor: Cursor!,
        collapsedGroupLayout: Int,
        expandedGroupLayout: Int,
        groupFrom: Array<String!>!,
        groupTo: IntArray!,
        childLayout: Int,
        childFrom: Array<String!>!,
        childTo: IntArray!)

    Constructor.

    Parameters
    context Context!: The context where the ExpandableListView associated with this SimpleCursorTreeAdapter is running
    cursor Cursor!: The database cursor
    collapsedGroupLayout Int: The resource identifier of a layout file that defines the views for a collapsed group. The layout file should include at least those named views defined in groupTo.
    expandedGroupLayout Int: The resource identifier of a layout file that defines the views for an expanded group. The layout file should include at least those named views defined in groupTo.
    groupFrom Array<String!>!: A list of column names that will be used to display the data for a group.
    groupTo IntArray!: The group views (from the group layouts) that should display column in the "from" parameter. These should all be TextViews or ImageViews. The first N views in this list are given the values of the first N columns in the from parameter.
    childLayout Int: The resource identifier of a layout file that defines the views for a child. The layout file should include at least those named views defined in childTo.
    childFrom Array<String!>!: A list of column names that will be used to display the data for a child.
    childTo IntArray!: The child views (from the child layouts) that should display column in the "from" parameter. These should all be TextViews or ImageViews. The first N views in this list are given the values of the first N columns in the from parameter.

    SimpleCursorTreeAdapter

    Added in API level 1
    SimpleCursorTreeAdapter(
        context: Context!,
        cursor: Cursor!,
        groupLayout: Int,
        groupFrom: Array<String!>!,
        groupTo: IntArray!,
        childLayout: Int,
        childFrom: Array<String!>!,
        childTo: IntArray!)

    Constructor.

    Parameters
    context Context!: The context where the ExpandableListView associated with this SimpleCursorTreeAdapter is running
    cursor Cursor!: The database cursor
    groupLayout Int: The resource identifier of a layout file that defines the views for a group. The layout file should include at least those named views defined in groupTo.
    groupFrom Array<String!>!: A list of column names that will be used to display the data for a group.
    groupTo IntArray!: The group views (from the group layouts) that should display column in the "from" parameter. These should all be TextViews or ImageViews. The first N views in this list are given the values of the first N columns in the from parameter.
    childLayout Int: The resource identifier of a layout file that defines the views for a child. The layout file should include at least those named views defined in childTo.
    childFrom Array<String!>!: A list of column names that will be used to display the data for a child.
    childTo IntArray!: The child views (from the child layouts) that should display column in the "from" parameter. These should all be TextViews or ImageViews. The first N views in this list are given the values of the first N columns in the from parameter.

    Public methods

    getViewBinder

    Added in API level 5
    open fun getViewBinder(): SimpleCursorTreeAdapter.ViewBinder!

    Returns the ViewBinder used to bind data to views.

    Return
    SimpleCursorTreeAdapter.ViewBinder! a ViewBinder or null if the binder does not exist

    setViewBinder

    Added in API level 5
    open fun setViewBinder(viewBinder: SimpleCursorTreeAdapter.ViewBinder!): Unit

    Sets the binder used to bind data to views.

    Parameters
    viewBinder SimpleCursorTreeAdapter.ViewBinder!: the binder used to bind data to views, can be null to remove the existing binder

    See Also

    setViewText

    Added in API level 5
    open fun setViewText(
        v: TextView!,
        text: String!
    ): Unit

    Called by bindView() to set the text for a TextView but only if there is no existing ViewBinder or if the existing ViewBinder cannot handle binding to a TextView. Intended to be overridden by Adapters that need to filter strings retrieved from the database.

    Parameters
    v TextView!: TextView to receive text
    text String!: the text to be set for the TextView

    Protected methods

    bindChildView

    Added in API level 1
    protected open fun bindChildView(
        view: View!,
        context: Context!,
        cursor: Cursor!,
        isLastChild: Boolean
    ): Unit
    Parameters
    view View!: Existing view, returned earlier by newChildView
    context Context!: Interface to application's global information
    cursor Cursor!: The cursor from which to get the data. The cursor is already moved to the correct position.
    isLastChild Boolean: Whether the child is the last child within its group.

    bindGroupView

    Added in API level 1
    protected open fun bindGroupView(
        view: View!,
        context: Context!,
        cursor: Cursor!,
        isExpanded: Boolean
    ): Unit
    Parameters
    view View!: Existing view, returned earlier by newGroupView.
    context Context!: Interface to application's global information
    cursor Cursor!: The cursor from which to get the data. The cursor is already moved to the correct position.
    isExpanded Boolean: Whether the group is expanded.

    setViewImage

    Added in API level 1
    protected open fun setViewImage(
        v: ImageView!,
        value: String!
    ): Unit

    Called by bindView() to set the image for an ImageView. By default, the value will be treated as a Uri. Intended to be overridden by Adapters that need to filter strings retrieved from the database.

    Parameters
    v ImageView!: ImageView to receive an image
    value String!: the value retrieved from the cursor