`
韩悠悠
  • 浏览: 842579 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

BaseExpandableListAdapter

 
阅读更多

转载自:中国手机开发网

一、结构
  public abstract class BaseExpandableListAdapter extends Object implements ExpandableListAdapter, HeterogeneousExpandableList
  直接子类:CursorTreeAdapter,SimpleExpandableListAdapter
  间接子类:ResourceCursorTreeAdapter, SimpleCursorTreeAdapter

二、概述
  BaseExpandableListAdapter是ExpandableListAdapter的抽象基类,从一些数据中提供数据和视图给可折叠列表视图。
  所有继承本类的Adapters需要保证实现的getCombinedChildId(long, long)和 getCombinedGroupId(long)方法能正确地从View组或View子元素的ID中生成唯一的ID号。
  (译者注:组元素表示可折叠的列表项,子元素表示列表项展开后看到的多个子元素项。由于可折叠列表单纯寻找组元素和子元素的ID不是很方便,因此使用联合ID的方式来解决。于是有了getCombinedChildId()和getCombinedGroupId()方法。在andorid自带的ApiDomos的例子中有这个的代码:App/View/ExpandableList1)。

三、公共方法
  public boolean areAllItemsEnabled ()是否启用所有元素。
  public int getChildType (int groupPosition, int childPosition)获取由getChildView(int, int, boolean, View, ViewGroup)方法创建的指定子元素类型。参数:groupPosition 子元素所在的组位置,childPosition 子元素所在的位置。返回值:0表示任意一个子元素类型,因此此时应当只声明一种子元素类型。
  public int getChildTypeCount()获取由getChildView(int, int, boolean, View,ViewGroup)创建的所有子元素类型个数。每种类型表示一个能被getChildView(int, int, boolean, View, ViewGroup)转换的(任意组中的)View集合。如果适配器总是从所有的子元素中返回同一种类型,本方法将返回1。本方法将仅仅在AdapterView设置适配器时被调用。返回值:BaseExpandableListAdapter默认返回1。
  public long getCombinedChildId (long groupId, long childId)若你预见以下默认实现的IDs可能出现冲突,请重写本方法。实现返回一个long型:第0位:不管ID指向的是一个子元素(未设置)还是一个组(已设置),对于本方法bit值为1,第1-31位:小于31位的组ID,第32-63位:小于32位的子元素ID;返回列表所有项(组或子项)中唯一的(和可能稳定)的子元素ID号。从列表所有项(组或子项)中获得一个唯一的子ID号。可折叠列表要求每个元素(组或子项)在所有的子元素和组中有一个唯一的ID。本方法负责根据所给的子ID号和组ID号返回唯一的ID。此外,若hasStableIds()是true,那么必须要返回稳定的ID。参数:groupID 包含该子元素的组ID,childID 子元素的ID号。
  public long getCombinedGroupId (long groupId)若你预见以下默认实现产生IDs冲突的话,请重写本方法。实现返回一个long型:第0位:不管ID指向的是一个子元素(未设置)还是一个组(已设置),对于本方法bit值为1,第1-31位:小于31位的组ID,第32-63位:小于32位的子元素ID;返回列表所有项(组或子项)中唯一的(和可能稳定)的子元素ID号。从列表所有项(组或子项)中获得一个唯一的子ID号。可折叠列表要求每个元素(组或子项)在所有的子元素和组中有一个唯一的ID。本方法负责根据所给的子ID号和组ID号返回唯一的ID。此外,若hasStableIds()是true,那么必须要返回稳定的ID。参数:groupID 包含该子元素的组ID。返回
  public int getGroupType (int groupPosition)获得由getGroupView(int, boolean, View, ViewGroup)方法创建的组元素类型。为设置的组元素。参数:groupPosition 应返回类型所在组的位置。返回:0表示任意组位置,因此此时应当只申明了一种组类型。
  public int getGroupTypeCount ()返回由getGroupView(int, boolean, View, ViewGroup)方法创建的组视图类型个数。每个类型表示一个能被getGroupView(int, boolean, View, ViewGroup)转换的View集合。如果适配器总是返回同一种组类型,则此时本方法将返回1。本方法将仅当适配器被AdapterView设置时调用。返回:BaseExpandableListAdapter默认返回1.
  public boolean isEmpty ()(译者注:如果适配器没有任何数据,返回真。参见:Adapter)
  public void notifyDataSetChanged ()(译者注:当后台数据集发生改变时,调用此方法响应数据集的更改。)参见:notifyChanged()
  public void notifyDataSetInvalidated ()(译者注:当后台数据集不被验证的时候,调用此方法。)参见:notifyInvalidated()
  public void onGroupCollapsed (int groupPosition)当组折叠的时候被调用。参数:groupPosition 要折叠的组所在位置
  public void onGroupExpanded (int groupPosition)当组展开的时候被调用。参数:groupPosition 要折叠的组所在位置
  public void registerDataSetObserver (DataSetObserver observer)(译者注:注册当用该适配器修改数据时调用的观察器。)
  public void unregisterDataSetObserver (DataSetObserver observer)(译者注:注销之前通过 registerDataSetObserver(DataSetObserver) 方法注册到该适配器的观察器。)


分享到:
评论

相关推荐

    可扩展listview demo BaseExpandableListAdapter

    本示例"可扩展listview demo BaseExpandableListAdapter"将详细讲解如何使用`BaseExpandableListAdapter`来实现一个功能完善的可扩展ListView。 首先,我们需要理解`ExpandableListView`的工作原理。它扩展了`...

    Android BaseExpandableListAdapter 教程.doc

    在Android开发中,`BaseExpandableListAdapter`是一个用于创建可扩展列表视图(ExpandableListView)的数据适配器。这个适配器允许开发者构建复杂的列表结构,其中包含可展开和折叠的组(groups),每个组内又包含多...

    Android BaseExpandableListAdapter 教程

    NULL 博文链接:https://xieruilin.iteye.com/blog/726494

    ExpandableListView多级目录

    // 实现BaseExpandableListAdapter的方法,如getGroupCount(), getChildrenCount(), getGroup(), getChild()等 @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ...

    ExpandableListView单选以及多选实现

    接下来,我们需要扩展`BaseExpandableListAdapter`,在适配器中处理单选逻辑。在`getChildView()`方法中,根据`ChildItem`的`isSelected`属性来设置子项的选中状态,如改变文字颜色或背景色。同时,监听点击事件,当...

    expandableListview侧滑删除demo

    2. **监听器重写**:在适配器(BaseExpandableListAdapter)中,我们需要重写getView()方法,为每个item设置滑动手势监听器。监听器可以是自定义的,也可以使用库如SwipeToDismiss或SwipeRefreshLayout提供的现成...

    MonoAndroid:在C#中编写ExpandableListView和BaseExpandableListAdapter

    本篇将详细介绍如何在MonoAndroid环境下,使用C#语言来创建和填充`ExpandableListView`,以及如何自定义`BaseExpandableListAdapter`的子类。 首先,我们需要了解`ExpandableListView`的基本概念。`...

    Android 关于ExpandableListView刷新问题的解决方法

    通常,我们会先通过`findViewById()`方法获取到布局中的ExpandableListView实例,然后创建一个自定义的Adapter,如`EListAdapter`,该Adapter继承自`BaseExpandableListAdapter`。Adapter的构造函数接收数据源(通常...

    listview_Demo

    本示例"listview_Demo"主要探讨的是如何使用`BaseExpandableListAdapter`来实现一个可展开和收缩的ListView,这在展示层级结构数据时非常有用。 `BaseExpandableListAdapter`是Android提供的一个抽象适配器类,它是...

    ListAdapter

    在这个场景下,`BaseExpandableListAdapter`扮演了至关重要的角色,它是适配ExpandableListView的数据驱动器,负责将数据模型绑定到视图上。 `BaseExpandableListAdapter`是Android提供的一个抽象类,它是实现...

    Android扩展BaseExpandableListAdpter实现ExpandableAdapter

    本教程将深入探讨如何通过扩展`BaseExpandableListAdapter`来实现自定义的`ExpandableAdapter`。 首先,`BaseExpandableListAdapter`是Android提供的一个抽象类,它是`ExpandableListAdapter`接口的默认实现,提供...

    android学习笔记

    在Android开发中,深入理解关键组件和概念是至关重要的,这里我们将详细探讨`LayoutInflater`、`ImageButton`以及`BaseExpandableListAdapter`这三个Android核心组件。 首先,`LayoutInflater`是Android框架中一个...

    ExpandableListAdapter+CheckBox实现购物车

    在Android应用开发中,"ExpandableListAdapter+CheckBox实现购物车"是一个常见的功能需求,它涉及到数据展示、用户交互以及状态管理等多个方面的知识点。下面将详细解释这个主题。 首先,`ExpandableListAdapter`是...

    android 二级列表

    在Android中实现二级列表,通常会用到`BaseExpandableListAdapter`这个自定义适配器,它是Android SDK提供的用于处理可扩展列表视图(ExpandableListView)的基础类。 `BaseExpandableListAdapter`是`...

    android好友列表的一个实例

    本实例"android好友列表的一个实例"聚焦于如何使用`BaseExpandableListAdapter`来实现这样一个功能,同时实现了资源的高效复用,确保了应用的性能和用户体验。 首先,`BaseExpandableListAdapter`是Android提供的一...

Global site tag (gtag.js) - Google Analytics