Android 中文 API (93) —— BaseExpandableListAdapter
前言
本章內容是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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RHEL5.5 安装 oracle 11
- 下一篇: QT中关于ipv6和getaddress