注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

民主与科学

独立之人格,自由之思想

 
 
 

日志

 
 

SimpleExpandableListAdapter  

2010-05-17 12:57:36|  分类: 数据适配器 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 public class
SimpleExpandableListAdapter
extends BaseExpandableListAdapter
java.lang.Object
        android.widget.BaseExpandableListAdapter
              android.widget.SimpleExpandableListAdapter
Class Overview
    An easy adapter to map static data to group and child views defined in an XML file.
    You can separately specify the data backing the group as a List of Maps.
    Each entry in the ArrayList corresponds to one group in the expandable list.
    The Maps contain the data for each row. You also specify an XML file that defines the views used to display a group, 
    and a mapping from keys in the Map to specific views. This process is similar for a child,
    except it is one-level deeper so the data backing is specified as a List>, 
    where the first List corresponds to the group of the child, 
    the second List corresponds to the position of the child within the group,
    and finally the Map holds the data for that particular child.
SimpleExpandableListAdapter继承于BaseExpandableListAdapter。
他负责把静态的group数据和child数据映射到XML文件中定的group和child视图上。
SimpleExpandableListAdapter没有子类。
SimpleExpandableListAdapter的构造函数如下
    SimpleExpandableListAdapter(Context context, List<? extends Map<String, ?>> groupData, int groupLayout, 
    String[] groupFrom, int[] groupTo, 
    List<? extends List<? extends Map<String, ?>>> childData, int childLayout, String[] childFrom, int[] childTo)

    参数
    1,context:上下文。
    2,groupData:group数据,它是基于Map的list。Data里边的每一项都和 ListView里边的每一项对应。
        groupData里边的每一项都是一个Map类型,这个Map类里边包含了ListView每一行需要的数据。
    3,groupLayout :就是group布局文件id,可引用系统提供的,也可以自定义。
    4,groupFrom:这是个名字数组,每个名字是为了group在 ArrayList数组的每一个item索引Map<String,Object>的Object用的。
    5,groupTo:里面是一个为group显示用的TextView数组。这些 TextView是以id的形式来表示的。例如:Android.R.id.text1,这个text1在layout当中是可以索引的。
    6,childData:child数据,它是基于Map的list。Data里边的每一项都和 ListView里边的每一项对应。
        childData里边的每一项都是一个Map类型,这个Map类里边包含了ListView每一行需要的数据。
    3,childLayout :就是child的布局文件id,可引用系统提供的,也可以自定义。
    4,childFrom:这是个名字数组,每个名字是为了child在 ArrayList数组的每一个item索引Map<String,Object>的Object用的。
    5,childTo:里面是一个为child显示用的TextView数组。这些 TextView是以id的形式来表示的。例如:Android.R.id.text1,这个text1在layout当中是可以索引的。

        
    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)

    
    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, int lastChildLayout,
    String[] childFrom, int[] childTo)

主要SimpleExpandableListAdapter提供了以下两个函数(增加的)    
View        newChildView(boolean isLastChild, ViewGroup  parent)
Instantiates a new View for a child.
View     newGroupView(boolean isExpanded, ViewGroup parent)
Instantiates a new View for a group.

更多可参考《BaseExpandableListAdapter
》和《SimpleAdapter
实例1
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.ExpandableListActivity;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.widget.ExpandableListAdapter;
import android.widget.SimpleExpandableListAdapter;
import com.sec.android.touchwiz.samples.R;
public class ExpandableListSample4Xml extends ExpandableListActivity {
    private int mGroupIdColumnIndex;
    // Sample data set.    
    private String mMailboxList[]={ 
            "Inbox", "Sentbox", "Draft", 
            "Outbox", "Email inbox", "Conversation",
            "Trash", "My folders"
            };
    private String mSender[][] = { {"Andrew1", "Andrew2", "Andrew3", "Andrew4","Andrew5", "Andrew6"}, 
            {"Jeff1", "Jeff2", "Jeff3", "Jeff4", "Jeff5", "Jeff6", "Jeff7"},
            {"ED1", "ED2", "ED3", "ED4", "ED5"}, 
            {"Rachel1", "Rachel2", "Rachel3", "Rachel4"},
            {"Sean1", "Sean2", "Sean3", "Sean4", "Sean5"},
            {"Karen1", "Karen2", "Karen3", "Karen4", "Karen5", "Karen6", "Karen7"},
            {"Lisa1", "Lisa2", "Lisa3", "Lisa4", "Lisa5"},
            {"Rain1", "Rain2", "Rain3", "Rain4", "Rain5"}};
    private String mMailContext[][] = { {"I'm going to go to watch movie!!!!!!!!!!!!!!!!!!!!!!!!!!", "Hello....", "Nice to meet you", "Call me plz..", "Are you busy",  "Call me plz.." }, 
            {"hi" , "Call me plz.." , "hello", "I'm going to go to watch movie!!!!!!!!!!!!!!!!!!!!!!!!!!", "Hello....", "Nice to meet you", "Call me plz.."},
            {"hi,baby",  "Call me plz.." , "hi" , "Call me plz.." , "hello"},
            {"I'm going to go to watch movie!!!!!!!!!!!!!!!!!!!!!!!!!!", "Hello....", "Nice to meet you", "Call me plz.."}, 
            {"hi",  "Call me plz.." , "hi" , "Call me plz.." , "?????"},
            {"12312412","12414124","12412421","458645754","dfgsdgsdf","sdfgdfgh","sdfgdsfgh"},
            {"vclkj","lkvoajh","alskdjfoivj","jvlkjasldkf","79837214"},
            {"975432","kbvhuoisj","4362435,","342532","236dgasdt"}};    

    private String groupFrom[] = {"title"};
    private int groupTo[] = {android.R.id.text1};
    
    private String childFrom[] = {"name", "message"};
    private int childTo[] = {R.id.child_name, R.id.child_message};
    private ExpandableListAdapter mAdapter;
    private ArrayList<Map<String, String>> groupData =
        new ArrayList<Map<String, String>>();
    private ArrayList<ArrayList<Map<String, String>>> childData =
        new ArrayList<ArrayList<Map<String, String>>>();
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Query for people
        Cursor groupCursor = managedQuery(Phone.CONTENT_URI,
                new String[] {Phone._ID, Phone.DISPLAY_NAME}, null, null, null);
        // Cache the ID column index
        mGroupIdColumnIndex = groupCursor.getColumnIndexOrThrow(Phone._ID);
        // make data for group & child
        for(int i = 0; i < mMailboxList.length; i++) {
            HashMap<String, String> tempGroupData = new HashMap<String, String>();
            ArrayList<Map<String, String>> tmpChild = new ArrayList<Map<String, String>>();
            tempGroupData.put(groupFrom[0], mMailboxList);
            for(int j = 0; j < mSender.length; j++) {
                HashMap<String, String> tempChildData = new HashMap<String, String>();    
                tempChildData.put(childFrom[0], mSender[j]);
                tempChildData.put(childFrom[1], mMailContext[j]);
                
                tmpChild.add(tempChildData);
            }
            groupData.add(tempGroupData);
            childData.add(tmpChild);
        }
        // Set up our adapter
        mAdapter = new MyExpandableListAdapter(this,
                groupData,
                android.R.layout.simple_expandable_list_item_1,
                groupFrom,
                groupTo,
                childData,
                R.layout.expandablelistsample4xml_child,
                childFrom,
                childTo);
        setListAdapter(mAdapter);
    }
    public class MyExpandableListAdapter extends SimpleExpandableListAdapter {
        public MyExpandableListAdapter(Context context,
                List<? extends Map<String, ?>> groupData, 
                int groupLayout,
                String[] groupFrom, 
                int[] groupTo,
                List<? extends List<? extends Map<String, ?>>> childData,
                int childLayout, 
                String[] childFrom, 
                int[] childTo) {
            super(context, groupData, groupLayout, groupFrom, groupTo, childData,
                    childLayout, childFrom, childTo);
        }
    }
}
  评论这张
 
阅读(3154)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017