




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、android可展开(收缩)的列表ListView(ExpandableListView)每天都在用QQ聊天,今天突然一想,android怎么实现列表的分组展开呢?看了看api,发现其实现过程也很简单。先看一下最终效果吧!1、首先创建我们的Activity,继承 android.app.ExpandableListActivity,直接看代码吧。1. package com.ideasandroid.sample;2. import android.app.ExpandableListActivity;3. import android.os.Bundle;4. import com.idea
2、sandroid.sample.adapter.IdeasExpandableListAdapter;5.6. /*7. * author IdeasAndroid8. * 可展开(收缩)列表示例9. */10. public class IdeasExpandableListView extends ExpandableListActivity 11. Override12. public void onCreate(Bundle savedInstanceState) 13.
3、60; super.onCreate(savedInstanceState);14. /设置列表适配器IdeasExpandableListAdapter15. setListAdapter(new IdeasExpandableListAdapter(this);16. 17. 复制代码2、创建适配器,继承android.widget.BaseExpandableListAdapter。1. packag
4、e com.ideasandroid.sample.adapter;2.3. import java.util.ArrayList;4. import java.util.List;5. import android.content.Context;6. import android.view.Gravity;7. import android.view.View;8. import android.view.ViewGroup;9. import android.widget.AbsListView;10. import android.widget.BaseExpandableListAd
5、apter;11. import android.widget.TextView;12.13. /*14. * author IdeasAndroid 15. * 可展开(收缩)列表示例16. */17. public class IdeasExpandableListAdapter extends BaseExpandableListAdapter 18.19. private Context mContext = null;20. / 测试数据,开发时可能来自数据库,网
6、络.21. private String groups = "家人", "朋友", "同事" ;22. private String familis = "老爸", "老妈", "妹妹" ;23. private String friends = "小李", "张三",
7、"李四" ;24. private String colleagues = "陈总", "李工", "李客户" ;25.26. private List<String> groupList = null;27. private List<List<String>> itemList = null;28.29.
8、160; public IdeasExpandableListAdapter(Context context) 30. this.mContext = context;31. groupList = new ArrayList<String>();32.
9、; itemList = new ArrayList<List<String>>();33. initData();34. 35.36. /*37. * 初始化数据,将相关数据放到List中,方便处理38.
10、; */39. private void initData() 40. for (int i = 0; i < groups.length; i+) 41. groupList.add(groupsi);42
11、. 43. List<String> item1 = new ArrayList<String>();44. for (int i = 0; i < familis.length; i+) 45.
12、0; item1.add(familisi);46. 47.48. List<String> item2 = new ArrayList<String>();49.
13、160; for (int i = 0; i < friends.length; i+) 50. item2.add(friendsi);51. 52.53.
14、List<String> item3 = new ArrayList<String>();54. for (int i = 0; i < colleagues.length; i+) 55. item3.add(colleaguesi);56. &
15、#160; 57.58. itemList.add(item1);59. itemList.add(item2);60. itemList.add(item3);61.
16、; 62.63. public boolean areAllItemsEnabled() 64. return false;65. 66.67. /*68. * 设置子节点对象,在事件处理时返回的对象,可存放一些数据69.
17、160; */70. public Object getChild(int groupPosition, int childPosition) 71. return itemList.get(groupPosition).get(childPosition);72. 73.74. &
18、#160; public long getChildId(int groupPosition, int childPosition) 75. return childPosition;76. 77.78. /*79. * 字节点视图,这里我们显示一个文本对象80.
19、160; */81. public View getChildView(int groupPosition, int childPosition,82. boolean isLastChild, View convertView, ViewGroup parent) 83.
20、0; TextView text = null;84. if (convertView = null) 85. text = new TextView(mContext);86.
21、 else 87. text = (TextView) convertView;88. 89. / 获取子节点要显示的名称90.
22、; String name = (String) itemList.get(groupPosition).get(childPosition);91. / 设置文本视图的相关属性92. AbsListView.LayoutParams lp = new AbsListView.LayoutParams(93.
23、0; ViewGroup.LayoutParams.FILL_PARENT, 40);94. text.setLayoutParams(lp);95. text.se
24、tTextSize(18);96. text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);97. text.setPadding(45, 0, 0, 0);98. text.setText(name);99
25、. return text;100. 101.102. /*103. * 返回当前分组的字节点个数104. */105. public int getChildre
26、nCount(int groupPosition) 106. return itemList.get(groupPosition).size();107. 108.109. /*110. * 返回分组对象,用于一些数据传递,在事件处理时可直接取得和分组相关的数据111.
27、 */112. public Object getGroup(int groupPosition) 113. return groupList.get(groupPosition);114. 115.116. /*117.
28、160; * 分组的个数118. */119. public int getGroupCount() 120. return groupList.size();121. 122.123. public long getG
29、roupId(int groupPosition) 124. return groupPosition;125. 126.127. /*128. * 分组视图,这里也是一个文本视图129. */130. &
30、#160; public View getGroupView(int groupPosition, boolean isExpanded,131. View convertView, ViewGroup parent) 132. TextView text = null;133.
31、; if (convertView = null) 134. text = new TextView(mContext);135. else 136.
32、 text = (TextView) convertView;137. 138. String name = (String) groupList.get(groupPosition);139.
33、 AbsListView.LayoutParams lp = new AbsListView.LayoutParams(140. ViewGroup.LayoutParams.FILL_PARENT, 40);141. text.setL
34、ayoutParams(lp);142. text.setTextSize(18);143. text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);144. text.setPadding(36, 0, 0
35、, 0);145. text.setText(name);146. return text;147. 148.149. /*150. * 判断分组是否为空,本示例中数据是固定的,所以不会
36、为空,我们返回false 151. * 如果数据来自数据库,网络时,可以把判断逻辑写到这个方法中,如果为空152. * 时返回true153. */154. public boolean isEmpty() 155. return false;156. 157.158. /*159. * 收缩列表时要处理的东西都放这儿160. */161. public void onGroupCollapsed(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深度解读2025年二手奢侈品鉴定标准与交易规范研究报告
- 2024年12月大学英语四级真题试卷及答案
- 2024年《安全生产月》启动仪式发言稿(6份)
- 2025年人工智能芯片在智能交通信号控制中的应用前景报告
- 2023注册会计师考试(CPA)《税法》考前自测题(含答案)
- 2023年财政学试题库含答案
- 深度解读2025:私募股权投资基金行业热点与退出策略创新研究报告
- 2025年农产品质量安全追溯体系与农业社会化服务体系建设研究
- 2025年汽车行业供应链风险管理与企业风险管理评估报告
- 2023甲状腺结节和分化型甲状腺癌诊治指南第二版(第一部分)
- 小学数学课堂教学案例分析
- 采血后预防淤青的按压方式
- 2025年餐饮考试笔试试题及答案
- 路灯安装工程施工方案
- 部编版语文六年级(上)全册同步课课练(含答案)
- 无人机行业安全事故应急预案
- 学校食堂保洁服务方案(技术标)
- 2024-2025学年牛津译林版八年级英语上学期期末考试试卷(南京卷)
- 《汽车制造物流管理教程》课件
- 建筑工地建筑垃圾(渣土)运输安全协议书(2篇)
- 2024年县乡教师选调进城考试《教育心理学》题库及完整答案【必刷】
评论
0/150
提交评论