Android数据适配-ExpandableListView

之前写过关于Android中ListView的用法,其中可以使用ArrayAdapter,SimpleAdapter,BaseAdapter去实现,这次主要使用的ExpandableListView展示一种两层的效果,ExpandableListView是android中可以实现下拉list的一个控件类似于QQ那种我好友之后就是一排自己的好友,就是两层效果,实现的话使用SimpleExpandableListAdapter即可。

布局文件

先看下效果吧:

main中xml代码:

  <Button
        android:onClick="test"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="FlyElephant" />

    <ExpandableListView
        android:id="@id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:drawSelectorOnTop="false" />

定义一个省份的province.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/list_provinceText"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:paddingBottom="8px"
        android:paddingLeft="30px"
        android:paddingRight="5px"
        android:paddingTop="8px"
        android:textSize="20sp" />

</LinearLayout>

定义了一个地区的child.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

       <TextView
        android:id="@+id/child_text"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:paddingBottom="8px"
        android:paddingLeft="30px"
        android:paddingRight="5px"
        android:paddingTop="8px"
        android:textSize="20sp" />

</LinearLayout>

Demo实现

主要实现代码,代码中都已经注释,就不用细说了,如有疑问可以评论区讨论:

       // 创建一级条目
        List<Map<String, String>> provinces = new ArrayList<Map<String, String>>();
        //创建两个省份一级条目
        Map<String, String> firstProvince= new HashMap<String, String>();
        firstProvince.put("province", "河南");
        Map<String, String> secondProvince= new HashMap<String, String>();
        secondProvince.put("province", "北京");
        provinces.add(firstProvince);
        provinces.add(secondProvince);
        // 创建一级条目下的的二级地区条目
        List<Map<String, String>> childList1= new ArrayList<Map<String, String>>();
        //同样是在一级条目目录下创建两个对应的二级条目目录
        Map<String, String> child1= new HashMap<String, String>();
        child1.put("child", "郑州");
        Map<String, String> child2 = new HashMap<String, String>();
        child2.put("child", "开封");
        childList1.add(child1);
        childList1.add(child2);
        //同上
        List<Map<String, String>> childList2 = new ArrayList<Map<String, String>>();
        Map<String, String> child3 = new HashMap<String, String>();
        child3.put("child", "海淀");
        Map<String, String> child4 = new HashMap<String, String>();
        child4.put("child", "昌平");
        childList2.add(child3);
        childList2.add(child4);
        // 将二级条目放在一个集合里,供显示时使用
        List<List<Map<String, String>>> childs = new ArrayList<List<Map<String, String>>>();
        childs.add(childList1);
        childs.add(childList2);
        /**
         * 使用SimpleExpandableListAdapter显示ExpandableListView
         * 参数1.上下文对象Context
         * 参数2.一级条目目录集合
         * 参数3.一级条目对应的布局文件
         * 参数4.fromto,就是map中的key,指定要显示的对象
         * 参数5.与参数4对应,指定要显示在groups中的id
         * 参数6.二级条目目录集合
         * 参数7.二级条目对应的布局文件
         * 参数8.fromto,就是map中的key,指定要显示的对象
         * 参数9.与参数8对应,指定要显示在childs中的id
         */
        SimpleExpandableListAdapter adapter = new SimpleExpandableListAdapter(
                this, provinces, R.layout.list_group, new String[] { "province" },
                new int[] { R.id.list_groupText }, childs, R.layout.child,
                new String[] { "child" }, new int[] { R.id.child_text });
        setListAdapter(adapter);

忘说了, mainActivity需要继承ExpandableListActivity,看下最终的效果吧:

时间: 2024-11-10 07:28:51

Android数据适配-ExpandableListView的相关文章

【转】Android屏幕适配全攻略(最权威的官方适配指导)

Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习本文,对于Android的屏幕适配,你将有所收获! Android屏幕适配出现的原因 重要概念 屏幕尺寸 屏幕分辨率 屏幕像素密度 dpdipdpisppx mdpihdpixdpixxdpi 解决方案 支持各种屏幕尺寸 使用wrap_contentmatch_parentweight 使用相对布局

Android屏幕适配全攻略(最权威的官方适配指导)

Android屏幕适配出现的原因 在我们学习如何进行屏幕适配之前,我们需要先了解下为什么Android需要进行屏幕适配. 由于Android系统的开放性,任何用户.开发者.OEM厂商.运营商都可以对Android进行定制,修改成他们想要的样子. 但是这种"碎片化"到底到达什么程度呢? 在2012年,OpenSignalMaps(以下简称OSM)发布了第一份Android碎片化报告,统计数据表明, 2012年,支持Android的设备共有3997种. 2013年,支持Android的设备

Android屏幕适配全攻略(最权威的Google官方适配指导)

Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习本文,对于Android的屏幕适配,你将有所收获! 出处:http://blog.csdn.net/zhaokaiqiang1992 Android屏幕适配出现的原因 重要概念 屏幕尺寸 屏幕分辨率 屏幕像素密度 dpdipdpisppx mdpihdpixdpixxdpi 解决方案 支持各种屏幕尺

【转】android多分辨率适配

前一阶段开发android项目,由于客户要求进行多分辨率适配,能够支持国内主流的分辨率手机.因此经过了几次开发走了很多弯路,目前刚刚领略了android多分辨率适配的一些方法. 先介绍一下所走的弯路,由于android的布局文件存放在res的layout中,可以根据不同的手机分辨率指定特定的layou参数,如图所示:.根据不同的手机设定多个分辨率layout参数布局文件.因此再程序加载的过程中,会把运行该分辨率下的布局文件. 这样开发的问题是回到至布局文件很多,很乱.不方便管理.一旦修改需要修改

android多分辨率适配

前一阶段开发android项目,由于客户要求进行多分辨率适配,能够支持国内主流的分辨率手机.因此经过了几次开发走了很多弯路,目前刚刚领略了android多分辨率适配的一些方法. 先介绍一下所走的弯路,由于android的布局文件存放在res的layout中,可以根据不同的手机分辨率指定特定的layou参数,如图所示:.根据不同的手机设定多个分辨率layout参数布局文件.因此再程序加载的过程中,会把运行该分辨率下的布局文件. 这样开发的问题是回到至布局文件很多,很乱.不方便管理.一旦修改需要修改

Android屏幕适配全攻略(最权威的官方适配指导)(转),共大家分享。

Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习本文,对于Android的屏幕适配,你将有所收获! Android屏幕适配出现的原因 重要概念 屏幕尺寸 屏幕分辨率 屏幕像素密度 dpdipdpisppx mdpihdpixdpixxdpi 解决方案 支持各种屏幕尺寸 使用wrap_contentmatch_parentweight 使用相对布局

(转)Android屏幕适配全攻略

转载自http://blog.csdn.net/zhaokaiqiang1992 Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习本文,对于Android的屏幕适配,你将有所收获! Android屏幕适配出现的原因 重要概念 屏幕尺寸 屏幕分辨率 屏幕像素密度 dpdipdpisppx mdpihdpixdpixxdpi 解决方案 支持各种屏幕尺

Android屏幕适配全攻略(最权威的官方适配指导)--转

本文转自:http://www.cocoachina.com/android/20151030/13971.html Android屏幕适配出现的原因 在我们学习如何进行屏幕适配之前,我们需要先了解下为什么Android需要进行屏幕适配. 由于Android系统的开放性,任何用户.开发者.OEM厂商.运营商都可以对Android进行定制,修改成他们想要的样子. 但是这种“碎片化”到底到达什么程度呢? 在2012年,OpenSignalMaps(以下简称OSM)发布了第一份Android碎片化报告

【Android开发进阶】Android屏幕适配全攻略(最权威的官方适配指导)

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习本文,对于Android的屏幕适配,你将有所收获! Android屏幕适配出现的原因 重要概念 屏幕尺寸 屏幕分辨率 屏幕像素密度 dpdipdpisppx mdpihdpixdpixxdpi 解决方案 支持