編輯:Android開發實例
前言
本章內容是android.widget.SimpleExpandableListAdapter,版本為Android 2.3 r1,翻譯來自"天涯明月刀"。
正文
一、結構
public abstract class SimpleExpandableListAdapter extends BaseExpandableListAdapter
java.lang.Object
android.widget.BaseExpandableListAdapter
android.widget.SimpleExpandableListAdapter
二、概述
一個使用Map存儲組元素和子元素的靜態數據,使用XML資源文件定義組元素和子元素View如何顯示的簡單適配器。你可以區分指定組元素返回的數據是List<Map>類型。在ArrayList中的每個實體對應ExpandalbeList中的一個組。實體中的Map列表包含了組下的每行數據。你也可以指定一個XML文件來定義用於在組元素的View的顯示。此時Map中的鍵值將與指定的View(XML中定義的view id)對應起來。子元素的處理情況類似。注意當可折疊的深度若不只1層,返回的數據將被指定為List類型。首個List對應子元素中所代表的組,第二個List對應孫子元素在子元素組中的位置。Map亦將支持這樣的特殊元素。(子元素嵌套組元素的情況)
(譯者注:ExpandableList支持深度大於1的情況。在andorid自帶的ApiDomos的例子中有這個的代碼:App/View/ExpandableList3)。
三、構造函數
public SimpleExpandableListAdapter(Contextcontext,List<? extends Map<String, ?>> groupData, int groupLayout,String[]groupFrom, int[] groupTo,List<? extends List<? extends Map<String, ?>>> childData, int childLayout,String[]childFrom, int[] childTo)
構造函數
參數
context 與SimpleExpandableListAdapter
關聯的ExpandableListView
的上下文。
groupData 一個Maps列表(List)。集合中的每個字典項與可折疊列表中的每個組元素一致。字典項提供了組元素包含的所有數據,並包含所有在"groupFrom"中指定的記錄。
groupLayout 顯示組元素的資源文件。該資源文件定義了如何顯示組元素。該布局文件必須至少包括groupTo中所定義的View。(即groupTo中的View id數組必須都在該布局文件中找到)
groupFrom 一個鍵值列表。對應與組相關聯的Map中的鍵值。
grouptTo 組View應當顯示groupFrom參數中的所有列數據。這些數據應當都用TextView來顯示。列表中的前N個View從前N個groupFrom參數獲得列元素的數據。
childData 一個Map列表的列表。外部列表中的每個實體對應一個組(按照組的位置編號)。在內部列表的每個實體對應某個組的子元素(按照子元素的位置編號)。該Map對應了子元素的數據。(按照childFrom數組中的值編號)。該Map包含了每個子元素的數據,並且應當包括所有在childFrom中指定的實體。
childLayout 顯示子元素的資源文件。該資源文件定義了如何顯示子元素。布局文件至少應該包括所有在childTo中定義的View。(即childTo中的view id數組必須都在該布局文件中找到)
childFrom 定義顯示子元素的列名。該列名與childData中的子元素屬性(字典鍵值)對應。
childTo 子View應當顯示childFrom參數中的所有列數據。這些數據應當都用TextView來顯示。列表中的前N個View從前N個childFrom參數獲得列元素的數據。
public SimpleExpandableListAdapter (Context context, List<? extends Map<String, ?>> groupData, int expandedGroupLayout, int collapsedGroupLayout, String[] groupFrom, int[] groupTo, List<? extends List<? extends Map<String, ?>>> childData, int childLayout, String[] childFrom, int[] childTo)
構造函數。
參數
context 與SimpleExpandableListAdapter關聯的ExpandableListView的上下文。
groupData 一個Maps列表(List)。集合中的每個字典項與可折疊列表中的每個組元素一致。字典項提供了組元素包含的所有數據,並包含所有在"groupFrom"中指定的記錄。
expandedGroupLayout 定義組展開時的View的XML資源布局。該布局文件應當至少包括所有在groupTo中所定義的View。(即groupTo中的View id數組必須都在該布局文件中找到)
collapasedGroupLayout 定義組折疊時的View的XML資源布局。該布局文件應當至少包括所有在groupTo中所定義的View。(即groupTo中的View id數組必須都在該布局文件中找到)
groupFrom 一個鍵值列表。對應與組相關聯的Map中的鍵值。
grouptTo 組View應當顯示groupFrom參數中的所有列數據。這些數據應當都用TextView來顯示。列表中的前N個View從前N個groupFrom參數獲得列元素的數據。
childData 一個Map列表的列表。外部列表中的每個實體對應一個組(按照組的位置編號)。在內部列表的每個實體對應某個組的子元素(按照子元素的位置編號)。該Map對應了子元素的數據。(按照childFrom數組中的值編號)。該Map包含了每個子元素的數據,並且應當包括所有在childFrom中指定的實體。
childLayout 顯示子元素的資源文件。該資源文件定義了如何顯示子元素。布局文件至少應該包括所有在childTo中定義的View。(即childTo中的view id數組必須都在該布局文件中找到)
childFrom 定義顯示子元素的列名。該列名與childData中的子元素屬性(字典鍵值)對應。
childTo 子View應當顯示childFrom參數中的所有列數據。這些數據應當都用TextView來顯示。列表中的前N個View從前N個childFrom參數獲得列元素的數據。
public SimpleExpandableListAdapter(Contextcontext,List<? extends Map<String, ?>> groupData, int expandedGroupLayout, int collapsedGroupLayout,String[]groupFrom, int[] groupTo,List<? extends List<? extends Map<String, ?>>> childData, int childLayout, int lastChildLayout,String[]childFrom, int[] childTo)
構造函數。
參數
context 與SimpleExpandableListAdapter關聯的ExpandableListView的上下文。
groupData 一個Maps列表(List)。集合中的每個字典項與可折疊列表中的每個組元素一致。字典項提供了組元素包含的所有數據,並包含所有在"groupFrom"中指定的記錄。
expandedGroupLayout 定義組展開時的View的XML資源布局。該布局文件應當至少包括所有在groupTo中所定義的View。(即groupTo中的View id數組必須都在該布局文件中找到)
collapasedGroupLayout 定義組折疊時的View的XML資源布局。該布局文件應當至少包括所有在groupTo中所定義的View。(即groupTo中的View id數組必須都在該布局文件中找到)
groupFrom 一個鍵值列表。對應與組相關聯的Map中的鍵值。
grouptTo 組View應當顯示groupFrom參數中的所有列數據。這些數據應當都用TextView來顯示。列表中的前N個View從前N個groupFrom參數獲得列元素的數據。
childData 一個Map列表的列表。外部列表中的每個實體對應一個組(按照組的位置編號)。在內部列表的每個實體對應某個組的子元素(按照子元素的位置編號)。該Map對應了子元素的數據。(按照childFrom數組中的值編號)。該Map包含了每個子元素的數據,並且應當包括所有在childFrom中指定的實體。
childLayout 顯示子元素的資源文件。該資源文件定義了如何顯示子元素。布局文件至少應該包括所有在childTo中定義的View。(即childTo中的view id數組必須都在該布局文件中找到)
lastChildLayout 定義每組中最後一個子元素的View資源布局情況。該布局文件應當至少包括所有在childTo中所定義的View。(即childTo中的View id數組必須都在該布局文件中找到)
childFrom 定義顯示子元素的列名。該列名與childData中的子元素屬性(字典鍵值)對應。
childTo 子View應當顯示childFrom參數中的所有列數據。這些數據應當都用TextView來顯示。列表中的前N個View從前N個childFrom參數獲得列元素的數據。
四、公共方法
public Object getChild (int groupPosition, int childPosition)
public long getChildId (int groupPosition, int childPosition)
(譯者注:獲取與在給定組給予孩子相關的數據。)
public View getChildView (int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent)
(譯者注:獲取子項)
public int getChildrenCount (int groupPosition)
(譯者注:返回在指定Group的Child數目。)
public Object getGroup (int groupPosition)
public int getGroupCount ()
(譯者注:返回Group的總數目。)
public long getGroupId (int groupPosition)
public View getGroupView (int groupPosition, boolean isExpanded, View convertView, ViewGroup parent)
(譯者注:獲取父項)
public boolean hasStableIds ()
public boolean isChildSelectable (int groupPosition, int childPosition)
(譯者注:是否讓child獲得焦點)
public View newChildView (boolean isLastChild, ViewGroup parent)
新建一個子元素View。
參數
isLastChild 該child是否是組中的最後一個元素
parent 新的View的最終父親。
返回
新的子元素View對象。
public View newGroupView (boolean isExpanded, ViewGroup parent)
新建一個組元素View。
參數
isExpanded 該組元素是否當前處於折疊狀態
parent 新View的最終父親。
返回
新的組元素View對象。
五、補充
示例代碼:
List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();當我們第一次下載QQ並且打開的時候,會有一個新手引導,引導是幾張圖片,再加上一些文字說明,向右滑動,直到結束,今天一大早起來研究了一下關於此種效果的實現之View
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個