Android开发之ExpandableListView: 可展开的ListView
ExpandableListView: 可展开的ListView
ListView 对于Android开发者来说是再熟悉不过的了,不过ListView的功能也有限。当需要展示第二层级数据时,使用ExpandableListView会更方便,下面是两个实例:
public class MainActivity extends ExpandableListActivity {@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); /* 这里不用setContentView()去加载布局,因为继承了类ExpandableListActivity。 如果需要加载自定义布局,则不需继承类ExpandableListActivity, 而在自定义布局文件里添加ExpandableListView等控件 */ //创建主List,用于存放第一层级数据 List<Map<String, String>> groupData = new ArrayList<Map<String, String>>(); //创建子List,用于存放第二层级数据 List<List<Map<String, String>>> childData = new ArrayList<List<Map<String, String>>>(); //向主List、子List中添加数据 for (int i = 0; i < 5; i++) {//向主List中添加数据 Map<String, String> groupMap = new HashMap<String, String>(); groupMap.put("group", "group " + i); groupData.add(groupMap); //向子List中添加数据 List<Map<String, String>> children = new ArrayList<Map<String, String>>(); for (int j = 0; j < 3; j++) {Map<String, String> childMap = new HashMap<String, String>(); childMap.put("child", "child " + j); children.add(childMap); }childData.add(children); }//利用SimpleExpandableListAdapter类构建设配器,可类比SimpleAdapter. ExpandableListAdapter mAdapter = new SimpleExpandableListAdapter(this, groupData, //第一层级数据 android.R.layout.simple_expandable_list_item_1, //第一层级子布局,可自定义 new String[]{"group"}, //键值 new int[]{android.R.id.text1}, //第一层级子布局中的显示内容的控件Id childData, //第二层级数据 android.R.layout.simple_expandable_list_item_2, //第二层级子布局,可自定义 new String[]{"child"}, //键值 new int[]{android.R.id.text1} //第二层级子布局中的显示内容的控件Id ); setListAdapter(mAdapter); } }
效果图如下:
public class MainActivity1 extends Activity {ExpandableListView expandableListView; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); //与上一个例子不同的是这里加载了自定义布局 setContentView(R.layout.activity_main); expandableListView = (ExpandableListView) findViewById(R.id.expandableListView); MyAdapter madapter = new MyAdapter(); expandableListView.setAdapter(madapter); }//自定义一个继承BaseExpandableListAdapter的设配器类,可类比BaseAdapter public class MyAdapter extends BaseExpandableListAdapter{TextView textView; //groupData为第一层级的数据,childData为第二层级的数据 public String [] groupData = {"name 1","name 2","name 3","name 4"}; public String [][] childData = {{"number 1_1","number 1_2"}, {"number 2_1"}, {"number 3_1","number 3_2","number 3_3"}, {"number 4_1","number 4_2"}}; @Override public int getGroupCount() {return groupData.length; }@Override public int getChildrenCount(int groupPosition) {return childData[groupPosition].length; }@Override public Object getGroup(int groupPosition) {return groupData[groupPosition]; }@Override public Object getChild(int groupPosition, int childPosition) {return childData[groupPosition][childPosition]; }@Override public long getGroupId(int groupPosition) {return 0; }@Override public long getChildId(int groupPosition, int childPosition) {return 0; }@Override public boolean hasStableIds() {return true; }@Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_item,null); textView = (TextView) view.findViewById(R.id.textView); textView.setText(groupData[groupPosition]); return view; }@Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_item,null); textView = (TextView) view.findViewById(R.id.textView); textView.setText(childData[groupPosition][childPosition]); return view; }@Override public boolean isChildSelectable(int groupPosition, int childPosition) {return true; }}}
效果图如下:
Android开发之ExpandableListView: 可展开的ListView相关推荐
- Android开发之ExpandableListView
编辑器加载中... http://www.cdtarena.com/gpx/201207/4304.html 有时候,使用ListView并不能满足应用程序所需要的功能.有些应用程序需要多组Lis ...
- android开发之ExpandableListView的使用,实现类似QQ好友列表
由于工作需要,今天简单研究了一下ExpandableListView,做了一个类似QQ列表的Demo,和大家分享一下. 效果图如下: 先来看看主布局文件: <RelativeLayout xml ...
- Android开发之ExpandableListView可拓展列表和子item左滑结合
Hello!各位大神好,这是我的第一篇博客,大二学生初学安卓还不到几个月,所以希望不足之处能够多多指教. 在Android开发中,我们经常会遇到点击,展开,可拓展列表的使用,同时可恶的产品经理还要求你 ...
- Android开发之旅:HelloWorld项目的目录结构
引言 前面Android开发之旅:环境搭建及HelloWorld,我们介绍了如何搭建Android开发环境及简单地建立一个HelloWorld项目,本篇将通过HelloWorld项目来介绍Androi ...
- Android开发之无bug滑动删除源码(非第三方库)
Android开发之无bug滑动删除源码(非第三方库源码请在最后面自行下载) 1.我们先来看下效果图:上边是抽取出来的demo,下边是公司用到的项目 2.我们来看下如何调用(我们这里以listView ...
- 【原作者:吴秦(Tyler)http://www.cnblogs.com/skynet/archive/2010/04/12/1709892.html】Android开发之旅:环境搭建及HelloWo
Android开发之旅:环境搭建及HelloWorld 2010-04-12 00:45 by 吴秦, 801360 阅读, 138 评论, 收藏, 编辑 --工欲善其事必先利其器 引言 本系列适合0 ...
- Android开发之QQ空间效果(QQ空间下拉图片放大,松手后回弹)
Android开发之QQ空间效果(QQ空间下拉图片放大,松手后回弹) 腾讯QQ空间的下拉图片放大,松手后回弹的效果带来的视觉差异效果让许多移动开发者心动不已,经本人一段时间的研究,终于实现了该视差效果 ...
- android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序
android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序 在应用里使用了后台服务,并且在通知栏推送了消息,希望点击这个消息回到activity, ...
- Android开发之TextView高级应用
Android开发之TextView高级应用 我们平时使用TextView往往让它作为一个显示文字的容器,但TextView的功能并不局限于此.以下就和大家分享一下TextView的一些使用技巧. A ...
最新文章
- WGCNA加权基因共表达网络分析(1)简介、原理
- Android线程实例讲解
- adaboost mh matlab,Adaboost算法的前世今生
- CloudFoundry环境上的三种端口,您分清楚了吗
- CRM_UPLOAD_BW
- 前端学习(2031)vue之电商管理系统电商系统之创建新分支
- html判断整数小数点后两位小数点,js控制input框只能输入数字和一位小数点且小数点后面只有两位小数...
- matlab学习:人脸识别之LBP (Local Binary Pattern)
- DOTNET零碎要点---1.vb.net利用Oracle.DataAccess.dll链接Oracle数据库
- LOJ #6051. 「雅礼集训 2017 Day11」PATH
- Linux下browser-sync无法启动Chrome的解决方法
- 计算机科学导论数据运算,2-计算机科学导论-数据与运算讲述.ppt
- KEmulator与eclipse的集成
- ITIL 4知识系列之ITIL4的设计框架解析
- Android小白从零开始学Android开发的要点总结(内含福利)
- 大学二年级-- “赖”在实验室的发明达人
- jmeter-模拟弱网测试
- 软考软件设计师下午题目java设计模式(自用)
- python程序设计基础之注释
- 语言-汉语-官话-中原官话-兖菏片:兖菏片