1:layout/expandablelistview_groups.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" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="100dp"
android:layout_height="wrap_content"
android:paddingLeft="40dp"
android:text="标题:" />
<TextView
android:id="@+id/tvEmailTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="承运人自有车辆、船舶及营运资质通知" />
</LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="100dp"
android:layout_height="wrap_content"
android:paddingLeft="40dp"
android:text="发件人:" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我"/>
</LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="100dp"
android:layout_height="wrap_content"
android:paddingLeft="40dp"
android:text="时间:" />
<TextView
android:id="@+id/tvEmailSendTimes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2013-11-11 19:25:16"/>
</LinearLayout>
</LinearLayout>

2:layout/expandablelistview_child.xml   展开文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/tvEmailContent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:lineSpacingExtra="2dp"
android:lineSpacingMultiplier="1.2"
android:text="this is content" />
</LinearLayout>

3:MainActivity.java

public class MainActivity extends Activity {
private ExpandableListView expandableListView_one; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); expandableListView_one =(ExpandableListView)findViewById(R.id.expandableListView); //expandableListView.setDivider();这个是设定每个Group之间的分割线。
//expandableListView.setGroupIndicator();这个是设定每个Group之前的那个图标。 //创建二个一级条目标题
Map<String, String> title_1 = new HashMap<String, String>();
Map<String, String> title_2 = new HashMap<String, String>(); title_1.put("tvEmailTitle", "第一封邮件");
title_1.put("tvEmailSendTimes", "2013-11-11 20:08:20"); title_2.put("tvEmailTitle", "第二封邮件");
title_2.put("tvEmailSendTimes", "2013-11-11 20:08:20"); //创建一级条目容器
List<Map<String, String>> groups = new ArrayList<Map<String,String>>();
groups.add(title_1);
groups.add(title_2); //创建二级条目内容
//内容一
Map<String, String> content_1 = new HashMap<String, String>();
String str="您好,R.java是项目中所有资源文件的索引文件,是由系统自动生成,不需要开发者手动的编辑。";
content_1.put("tvEmailContent", str); List<Map<String, String>> childs_1 = new ArrayList<Map<String,String>>();
childs_1.add(content_1); //内容一
Map<String, String> content_2 = new HashMap<String, String>();
content_2.put("tvEmailContent", str); List<Map<String, String>> childs_2 = new ArrayList<Map<String,String>>();
childs_2.add(content_2); //存放两个内容, 以便显示在列表中
List<List<Map<String, String>>> childs = new ArrayList<List<Map<String,String>>>();
childs.add(childs_1);
childs.add(childs_2); /*
使用SimpleExpandableListAdapter显示ExpandableListView
参数1.上下文对象Context
参数2.一级条目目录集合
参数3.一级条目对应的布局文件 (expandablelistview_groups.xml文件
参数4.标题,map中的key,指定要显示的对象
参数5.与参数4对应,指定要显示在groups中的id
参数6.二级条目目录集合
参数7.二级条目对应的布局文件 (expandablelistview_child)
参数8.展开内容,map中的key,指定要显示的对象
参数9.与参数8对应,指定要显示在childs中的id
*/
SimpleExpandableListAdapter adapter = new SimpleExpandableListAdapter(
this,
groups,
R.layout.expandablelistview_groups,
new String[]{"tvEmailTitle", "tvEmailSendTimes"},
new int[]{R.id.tvEmailTitle, R.id.tvEmailSendTimes},
childs,
R.layout.expandablelistview_child,
new String[]{"tvEmailContent"},
new int[]{R.id.tvEmailContent}
);
//将适配器加入列表
expandableListView_one.setAdapter(adapter);
//注册事件
expandableListView_one.setOnChildClickListener(listener);
} private OnChildClickListener listener = new OnChildClickListener(){
@Override
public boolean onChildClick(ExpandableListView arg0, View arg1,
int arg2, int arg3, long arg4) {
Toast.makeText(MainActivity.this, "ok", Toast.LENGTH_SHORT).show();
return false;
}
};
}
												

使用 ExpandableListView 实现折叠ListView的更多相关文章

  1. Android 高级UI设计笔记01:使用ExpandableListView组件(ListView的扩展)

    1.ExpandableListView是一个用来显示二级节点的ListView. 比如如下效果的界面: 2.使用ExpandableListView步骤 (1)要给ExpandableListVie ...

  2. 折叠ListView

    转自 http://blog.csdn.net/hnyzwtf/article/details/50487228 1 activity_main.xml <?xml version=" ...

  3. ListView的属性及方法详解

    本文转载于:http://blog.csdn.net/vector_yi/article/details/23195411 近期在重新学习Android控件知识,目前进行到ListView,感觉这是一 ...

  4. Android常用控件之GridView与ExpandableListView的用法

    概述 1.GridView:与ListView相比,可以显示多列,xml布局时其属性numColumns可以设置显示的列数. 2.ExpandableListView:与ListView相比,可以让每 ...

  5. 安卓第六天笔记--ListView

    安卓第六天笔记--ListView 1.AdapteView AdapteView 继承ViewGroup它的本质是容器 AdapterView派生了3个子类: AbsListView AbsSpin ...

  6. Android 关于ExpandableListView刷新的解决办法

    正文 首先是最基础的 ExpandableListView vList = (ExpandableListView) this.findViewById(R.id.list); EListAdapte ...

  7. Android之ExpandableListView的属性(Group不展开)

    1. 设置ExpandableListView 默认是展开的:  先实例化exListView 然后 exListView.setAdapter(exlvAdapter); //遍历所有group,将 ...

  8. Android ExpandableListView和ScrollView联用的一些注意事项

    之前有整理过ScrollView嵌套ListView的例子,讲的是计算listview的每一项的高度.已达到目标效果.同样的ExpandableListView嵌套ScrollView也是这么个思路, ...

  9. 第十四章:样式(Style)和主题(Theme)

    简介 Android的样式(Style)和主题(Theme)文件就好比WEB开发中的CSS一样,可以实现UI界面的风格统一管理,这和Windows平台的XAML格式(Silverlight.WPF)类 ...

随机推荐

  1. .sdp文件格式介绍

    最近做RTSP流播放,需要了解.sdp这种会话描述的文件格式,当然,里面的具体语法有SDP解析器来分析.但是我需要大概了解一些字段的意思,它是文本描述的,采用key value的形式描述. https ...

  2. Android双击返回键退出Activity的两种方法

    在开发应用程序的时候,有一种功能是非常常用到的,那就是迅速双击返回按钮,然后实现退出Activity的功能.本人在网上看了很多资料代码,总结起来,主要有两种比较好的方式.一种是开线程延时执行,一种是记 ...

  3. delphi TCXTreelist 通过代码控制行的可编辑性

    procedure TfrmSetOutPzTradeDeptPerson.grdTradeClientEditing(Sender: TObject;  AColumn: TcxTreeListCo ...

  4. java中的“包”与C#中的“命名空间

    原文地址:http://www.cnblogs.com/lidabo/archive/2012/12/15/2819865.html Package vs. Namespace 我们知道,重用性(re ...

  5. JS-Math内置对象

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. [实战]挖掘CSRF姿势

    [-]CSRF是个什么鬼? |___简单的理解: |----攻击者盗用了你的身份,以你的名义进行某些非法操作.CSRF能够使用你的账户发送邮件,获取你的敏感信息,甚至盗走你的财产. |___CSRF攻 ...

  7. FilterDispatcher已被标注为过时解决办法

    一些struts2的教程都是比较早的,当我们基于较新版本的struts2来实现代码的时候,往往会出现一些问题.比如这个警告:FilterDispatcher isdeprecated! 在web.xm ...

  8. C++沉思录之三——设计容器类

    一.对容器的基本认识 总的来说,容器应该包含放在其中的对象的副本,而不是对象本身. 二.复制容器意味着什么? 通常将容器成为模板,而容器内的对象的类型就是模板参数.Container<T> ...

  9. C#去除byte数组头尾杂质(即不需要的数据)

    代码如下: /// <summary> /// 去除byte数组头尾杂质(即不需要的数据) /// </summary> /// <param name="ar ...

  10. (转)chm格式的电子书打开是空白的解决办法

    当我们从网络上下载chm格式的电子书到本地后,打开就发现chm格式的电子书右边的目录是正常的,但是chm格式的电子书内容部分却是空白的情况,很多时候我们都以为是中毒了,但是用杀毒软件却杀不出来,其实很 ...