使用 ExpandableListView 实现折叠ListView
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的更多相关文章
- Android 高级UI设计笔记01:使用ExpandableListView组件(ListView的扩展)
1.ExpandableListView是一个用来显示二级节点的ListView. 比如如下效果的界面: 2.使用ExpandableListView步骤 (1)要给ExpandableListVie ...
- 折叠ListView
转自 http://blog.csdn.net/hnyzwtf/article/details/50487228 1 activity_main.xml <?xml version=" ...
- ListView的属性及方法详解
本文转载于:http://blog.csdn.net/vector_yi/article/details/23195411 近期在重新学习Android控件知识,目前进行到ListView,感觉这是一 ...
- Android常用控件之GridView与ExpandableListView的用法
概述 1.GridView:与ListView相比,可以显示多列,xml布局时其属性numColumns可以设置显示的列数. 2.ExpandableListView:与ListView相比,可以让每 ...
- 安卓第六天笔记--ListView
安卓第六天笔记--ListView 1.AdapteView AdapteView 继承ViewGroup它的本质是容器 AdapterView派生了3个子类: AbsListView AbsSpin ...
- Android 关于ExpandableListView刷新的解决办法
正文 首先是最基础的 ExpandableListView vList = (ExpandableListView) this.findViewById(R.id.list); EListAdapte ...
- Android之ExpandableListView的属性(Group不展开)
1. 设置ExpandableListView 默认是展开的: 先实例化exListView 然后 exListView.setAdapter(exlvAdapter); //遍历所有group,将 ...
- Android ExpandableListView和ScrollView联用的一些注意事项
之前有整理过ScrollView嵌套ListView的例子,讲的是计算listview的每一项的高度.已达到目标效果.同样的ExpandableListView嵌套ScrollView也是这么个思路, ...
- 第十四章:样式(Style)和主题(Theme)
简介 Android的样式(Style)和主题(Theme)文件就好比WEB开发中的CSS一样,可以实现UI界面的风格统一管理,这和Windows平台的XAML格式(Silverlight.WPF)类 ...
随机推荐
- Android特效 五种Toast详解
Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过一定的时间就会自动消失.而且Toast主要用于向用户显示提示消 ...
- sybase 备份和恢复
use master go dump transaction MBFEWKDB with no_log go dump transaction MBFEHISDB with no_log go use ...
- Java & Android Interviews #1
1.GC是什么? 为什么要有GC?GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供 ...
- 《Node.js开发指南》知识整理
Node.js简介 Node是一个可以让JavaScript运行在服务器端的平台,抛弃了传统平台依靠多线程来实现高并发的设计思路,而采用单线程.异步式I/O.事件驱动式的程序设计模型. 安装和配置No ...
- hadoop 常用命令
hdfs dfs -mkdir -p /usr/input/hot hdfs dfs -ls / hdfs dfs -ls /usr/input hdfd dfs -cat /usr/ouput/ho ...
- 关于UIView 的autoresizingMask属性,即UIViewAutoresizing
enum { UIViewAutoresizingNone = 0, UIViewAutoresizingFlexibleLeftMargin = 1 &l ...
- hdu 4605-Magic Ball Game(树状数组)
题目大意: 给你一棵二叉树,每个节点有一个w值,现在有一颗小球,值为x,从根节点往下掉,如果w==x,那么它就会停止:如果w>x,那么它往左.右儿子的概率都是1.2:如果w<x,那么它往左 ...
- 通过layout实现可拖拽自动排序的UICollectionView
文/CenturyGuo(简书作者)原文链接:http://www.jianshu.com/p/8d1bf1838882著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. Translat ...
- Qt 域名转成IP
#include <stdio.h>#include <stdlib.h>#include <netdb.h>#include <arpa/inet.h> ...
- ASP.NET静态页生成方法(模板替换)
本文实例讲述了ASP.NET静态页生成方法的一种简单方法,就是替换内容法. 适用场景 模板比较固定,页面替换内容较少. 基本原理 此方法中静态页生成用到的就是匹配跟替换了,首先得读取模板页的html内 ...