前言

  本章内容是android.widget.BaseExpandableListAdapter,版本为Android 2.3 r1,翻译来自"天涯明月刀",欢迎大家访问他的博客:http://sd6733531.javaeye.com/,再次感谢"天涯明月刀" !期待你一起参与Android 中文API的翻译,联系我over140@gmail.com。

声明

  欢迎转载,但请保留文章原始出处:)

    农民伯伯:http://over140.blog.51cto.com/

    Android中文翻译组:http://goo.gl/6vJQl

正文

  一、结构

public abstract class BaseExpandableListAdapter extends Object

implements ExpandableListAdapter, HeterogeneousExpandableList

java.lang.Object

android.widget.BaseExpandableListAdapter

直接子类

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。此外,若hasStableIds()是true,那么必须要返回稳定的ID。

   参数

  groupID   包含该子元素的组ID

  childID      子元素的ID号

返回

  列表所有项(组或子项)中唯一的(和可能稳定)的子元素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。此外,若hasStableIds()是true,那么必须要返回稳定的ID。

  参数

  groupID   包含该子元素的组ID

返回

  列表所有项(组或子项)中唯一的(和可能稳定)的子元素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) 方法注册到该适配器的观察器。)

  四、补充

文章链接

Android BaseExpandableListAdapter 教程

转载于:https://blog.51cto.com/over140/582413

Android 中文 API (93) —— BaseExpandableListAdapter相关推荐

  1. Android 中文API (94) —— MediaController

    前言 本章内容是android.widget.MediaController,版本为Android 2.3 r1,翻译来自"唐明",再次感谢"唐明" !期待你一 ...

  2. Android 中文 API 文档 (45) —— AbsoluteLayout.LayoutParams

    前言 本章内容是 android.widget.AbsoluteLayout.LayoutParams,版本为Android 2.2 r1,翻译来自"绵白糖",再次感谢" ...

  3. Android 中文API (92) —— MenuInflater

    前言 本章内容是android.view.MenuInflater,版本为Android 2.3 r1,翻译来自"獨鍆躌踄",欢迎大家访问他的博客:http://www.cnblo ...

  4. Android 中文 API (90) —— WindowManager

    一.结构 public interface WindowManager extends android.view.ViewManager android.view.WindowManager 二.概述 ...

  5. Android 中文API (70) —— BluetoothDevice[蓝牙]

    前言 本章内容是 android.bluetooth.BluetoothDevice,为Android蓝牙部分的章节翻译.蓝牙设备类,代表了蓝牙通讯国足中的远端设备.版本为 Android 2.3 r ...

  6. Android中文API(127) —— MessageQueue

    结构 继承关系 public class MessageQueue extends Object java.lang.Object android.os.MessageQueue 类概述 保存消息列表 ...

  7. android 中文 API (41) —— RatingBar.OnRatingBarChangeListener

    前言 本章内容是 android.widget.RatingBar.OnRatingBarChangeListener,版本为Android 2.2 r1,翻译来自madgoat,欢迎大家访问他的博客 ...

  8. Android 中文API (91) —— GestureDetector

    前言 本章内容是android.view.GestureDetector,版本为Android 2.3 r1,翻译来自"Haiya 胡蝶",再次感谢"Haiya 胡蝶&q ...

  9. Android 中文 API (19) —— TwoLineListItem

    一.结构 public class TwoLineListItem extends RelativeLayout java.lang.Object android.view.View android. ...

最新文章

  1. Python实现俄罗斯方块
  2. 从 for of 聊到 Generator
  3. Python第一弹--------初步了解Python
  4. 沉默是金 矩阵快速幂
  5. VTK:网格之TableBasedClipDataSetWithPolyData2
  6. python的django介绍_【Python基础知识】Django框架简介
  7. java实现在线浏览zip文件及文件下载
  8. 从Mysql某一表中随机读取n条数据的SQL查询语句
  9. 千层套路 - Vue 3.0 初始化源码探秘
  10. Word中摘要和正文同时分栏后,正文跑到下一页,怎么办?或Word分栏后第一页明明有空位后面的文字却自动跳到第二页了,怎么办?...
  11. Bootstrap导航中禁用导航链接
  12. Vue学习笔记01:准备开发与调试环境
  13. CSDN创始人蒋涛出席2021 中关村论坛,启动“科创中国”开源创新榜单评选
  14. linux 各文件夹的作用
  15. [转]软件企业的新三十六计
  16. 世界上最好玩的6种表情符号编程语言
  17. [ 物联网篇 ] 03 - Yocto Project (YP)构建 Alexa SDK
  18. 大数据:商业革命与科学革命
  19. 程序员常用单词词汇汇总
  20. 写一个函数,将一个字符串中的元音字母复制到另一字符串,然后输出。

热门文章

  1. 区块链技术指2.1 区块链技术
  2. 「DB」数据库事务的隔离级别
  3. EAR项目构建的几种方式
  4. Android的MediaPlayer
  5. 计算上月、下月、上周、下周..日期范围
  6. 怎么用matlab画TM11,矩形波导TM11模matlab仿真
  7. 数据结构 结构的声明 一个结构作为另一个结构的成员 单向链表的实现 双向链表的实现
  8. 为什么kafka的消费者要有分组的概念
  9. 设计模式(二)__装饰设计模式
  10. Spring配置数据源的四种方式