編輯:Android開發實例
前言
本章內容是android.widget.BaseExpandableListAdapter,版本為Android 2.3 r1,翻譯來自"天涯明月刀"。
正文
一、結構
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)
方法注冊到該適配器的觀察器。)
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
Android提供了許多方法來控制播放的音頻/視頻文件和流。其中該方法是通過一類稱為MediaPlayer。Android是提供MediaPlayer類訪問內置的媒體播放
Android對這種方法進行了封裝,我們沒有權限去調用這個方法,所以我們只能通過AIDL,然後利用Java的反射機制去調用系統級的方法。 下面上代碼:(注釋比較詳
Android提供了許多方法來控制播放的音頻/視頻文件和流。其中該方法是通過一類稱為MediaPlayer。Android是提供MediaPlayer類訪問內置的媒體播放