Android提高十七篇之多级树形菜单的实现
来源:互联网 发布:淘宝商城我淘我喜欢 编辑:程序博客网 时间:2024/05/16 06:16
本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处!
在Android里要实现树形菜单,都是用ExpandableList(也有高手自己继承ListView或者LinearLayout来做),但是ExpandableList一般只能实现2级树形菜单......本文也依然使用ExpandableList,但是要实现的是3级树形菜单。本文程序运行效果图:
当用BaseExpandableListAdapter来实现二级树形菜单时,父项(getGroupView())和子项(getChildView())都是使用TextView。当要实现三级树形菜单时,子项(getChildView())就必须使用ExpandableList了.......另外还要定义结构体来方便调用三级树形的数据,二级树形菜单可以用如下:
三级树形菜单可以用如下,子项是二级树形菜单的结构体:
实现三级树形菜单有两点要注意的:
1、第二级也是个树形菜单,因此必须在第二级项目展开/回收时设置足够的空间来完全显示二级树形菜单;
2、在实现三级树形菜单时,发现菜单的方法都是用不了(如OnChildClickListener、OnGroupClickListener等),因此要获得选中的数据就必须在外部定义好回调函数,然后在第二级生成二级树形菜单时回调这个外部函数。
PS:本文在解决No.2关键点的时候,只能取得第三级选中的序号.....而第一,第二级依然无法获取其序号。
main.xml源码如下:
testExpandableList.java是主类,调用其他工具类,源码如下:
TreeViewAdapter.java是实现二级树形菜单的工具类,源码如下:
SuperTreeViewAdapter.java是实现三级树形菜单的工具类,会用到TreeViewAdapter.java,源码如下:
总结,使用ExpandableList实现三级树形菜单时有些bug不好解决,而且定义三维数组的时候也要倍加小心......所以尽量把数据化简来使用二级树形菜单。
- Android提高十七篇之多级树形菜单的实现
- Android提高十七篇之多级树形菜单的实现
- Android提高十七篇之多级树形菜单的实现
- Android提高十七篇之多级树形菜单的实现
- Android提高十七篇之多级树形菜单的实现
- Android提高十七篇之多级树形菜单的实现
- Android提高十七篇之多级树形菜单的实现
- Android提高十七篇之多级树形菜单的实现
- Android提高十七篇之多级树形菜单的实现
- Android提高十七篇之多级树形菜单的实现
- Android提高十七篇之多级树形菜单的实现
- Android提高十七篇之多级树形菜单的实现 一
- Android多级树形菜单的实现
- Android---多级树形菜单的实现
- 多级树形菜单的实现
- 多级树形菜单的实现
- ListView实现多级树形菜单
- Android 多级菜单的实现
- kernel 启动过程之三, start_kernel()函数 概叙!init/main.c
- 还原 share point 内容数据库到一个站点集
- 从零开始
- kernel 启动过程之四,start_kernel中的rest_init函数到init进程
- 设计模式系列-创建者模式
- Android提高十七篇之多级树形菜单的实现
- kernel 启动过程之五, initcall 的来由, console 的初始化
- 未来在哪里
- 设计模式系列-原型模式
- 云计算-从基础到应用架构系列索引
- 云计算-从基础到应用架构系列-云计算的概念
- PostgreSQL笔记 存储过程 循环插入数据
- TC的优化--HDB--java api
- Objective-C中正确比较字符串