Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android中文API(95)——SimpleExpandableListAdapter

Android中文API(95)——SimpleExpandableListAdapter

編輯: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>>();
        List<List<Map<String, String>>> childData = new ArrayList<List<Map<String, String>>>();
        for (int i = 0; i < 20; i++) {
            Map<String, String> curGroupMap = new HashMap<String, String>();
            groupData.add(curGroupMap);
            curGroupMap.put(NAME, "Group " + i);
            curGroupMap.put(IS_EVEN, (i % 2 == 0) ? "This group is even" : "This group is odd");
            
            List<Map<String, String>> children = new ArrayList<Map<String, String>>();
            for (int j = 0; j < 15; j++) {
                Map<String, String> curChildMap = new HashMap<String, String>();
                children.add(curChildMap);
                curChildMap.put(NAME, "Child " + j);
                curChildMap.put(IS_EVEN, (j % 2 == 0) ? "This child is even" : "This child is odd");
            }
            childData.add(children);
        }
        
        // Set up our adapter
        mAdapter = new SimpleExpandableListAdapter(
                this,
                groupData,
                android.R.layout.simple_expandable_list_item_1,
                new String[] { NAME, IS_EVEN },
                new int[] { android.R.id.text1, android.R.id.text2 },
                childData,
                android.R.layout.simple_expandable_list_item_2,
                new String[] { NAME, IS_EVEN },
                new int[] { android.R.id.text1, android.R.id.text2 }
                );
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved