本文实例为大家分享了android实现菜单三级树展示的具体代码,供大家参考,具体内容如下

以下是部分代码,完整代码请在最下面点击下载:

【MainActivity】

public void treeOnClick() {

// TODO Auto-generated method stub

superAdapter.RemoveAll();

superAdapter.notifyDataSetChanged();

String MenuCatName = getDate("MenuCatName");

String MenuGroupName = getDate("MenuGroupName");

String MenuItemName = getDate("MenuItemName");

// 一级菜单名数组

parent = MenuCatName.split("/");

// 二级菜单名数组

child = MenuGroupName.split("/");

// 三级菜单名数组

grandchild = MenuItemName.split("/");

List superNodeTree = superAdapter

.GetTreeNode();

for (int i = 0; i < parent.length; i++) {

SuperTreeViewAdapter.SuperTreeNode superNode = new SuperTreeViewAdapter.SuperTreeNode();

superNode.parent = parent[i];

for (int j = 0; j < child_grandchild.length; j++) {

TreeViewAdapter.TreeNode node = new TreeViewAdapter.TreeNode();

node.parent = child_grandchild[j][0][0];

for (int k = 0; k < child_grandchild[j][1].length; k++) {

node.childs.add(child_grandchild[j][1][k]);

}

superNode.childs.add(node);

}

superNodeTree.add(superNode);

}

superAdapter.UpdateTreeNode(superNodeTree);

expandableListView.setAdapter(superAdapter);

}

【SuperTreeViewAdapter】

public ExpandableListView getExpandableListView() {

AbsListView.LayoutParams lp = new AbsListView.LayoutParams(

ViewGroup.LayoutParams.FILL_PARENT, TreeViewAdapter.ItemHeight);

ExpandableListView superTreeView = new ExpandableListView(parentContext);

superTreeView.setLayoutParams(lp);

// 去掉子菜单分割线

superTreeView.setDivider(null);

return superTreeView;

}

/**

* 三层树结构中的第二层是一个ExpandableListView

*/

public View getChildView(int groupPosition, int childPosition,

boolean isLastChild, View convertView, ViewGroup parent) {

// 是

final ExpandableListView treeView = getExpandableListView();

final TreeViewAdapter treeViewAdapter = new TreeViewAdapter(

this.parentContext, 0);

// 临时变量取得TreeViewAdapter的TreeNode集合,可为空

List tmp = treeViewAdapter.getTreeNode();

final TreeNode treeNode = (TreeNode) getChild(groupPosition,

childPosition);

tmp.add(treeNode);

treeViewAdapter.updateTreeNode(tmp);

treeView.setAdapter(treeViewAdapter);

// 取得选中的二级树形菜单的父子节点,结果返回给外部回调函数

treeView.setOnChildClickListener(this.stvClickEvent);

/**

* 第二级菜单展开时通过取得节点数来设置第三级菜单的大小

*/

treeView.setOnGroupExpandListener(new OnGroupExpandListener() {

@Override

public void onGroupExpand(int groupPosition) {

AbsListView.LayoutParams lp = new AbsListView.LayoutParams(

ViewGroup.LayoutParams.FILL_PARENT, (treeNode.childs

.size() + 1) * TreeViewAdapter.ItemHeight + 0);

treeView.setLayoutParams(lp);

}

});

/**

* 第二级菜单回收时设置为标准Item大小

*/

treeView.setOnGroupCollapseListener(new OnGroupCollapseListener() {

@Override

public void onGroupCollapse(int groupPosition) {

AbsListView.LayoutParams lp = new AbsListView.LayoutParams(

ViewGroup.LayoutParams.FILL_PARENT,

TreeViewAdapter.ItemHeight);

treeView.setLayoutParams(lp);

}

});

treeView.setPadding(TreeViewAdapter.PaddingLeft * 2, 0, 0, 0);

return treeView;

}

/**

* 三级树结构中的首层是TextView,用于作为title

*/

public View getGroupView(int groupPosition, boolean isExpanded,

View convertView, ViewGroup parent) {

TextView textView = TreeViewAdapter.getTextView(this.parentContext);

textView.setText(getGroup(groupPosition).toString());

// 设置首层menu标题背景

textView.setBackgroundResource(R.drawable.menu_category);

textView.setPadding(TreeViewAdapter.PaddingLeft * 2, 0, 0, 0);

return textView;

}

效果图:

完整代码下载地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

android四级菜单,android实现菜单三级树效果相关推荐

  1. android 下拉菜单触发_Android实现三级联动下拉框 城市选择器(简单)

    主要实现办法:动态加载各级下拉值的适配器 在监听本级下拉框,当本级下拉框的选中值改变时,随之修改下级的适配器的绑定值 先贴出效果图: 主布局代码: xmlns:tools="http://s ...

  2. android自定义彩虹,Android彩虹菜单

    核心代码: MainActivity.java package com.huatec.myapplication; import android.support.v7.app.AppCompatAct ...

  3. android仿优酷菜单,Android自定义控件之仿优酷菜单

    去年的优酷HD版有过这样一种菜单,如下图: 应用打开之后,先是三个弧形的三级菜单,点击实体键menu之后,这三个菜单依次旋转退出,再点击实体键menu之后,一级菜单会旋转进入,点击一级菜单,二级菜单旋 ...

  4. Android自定义控件:优酷菜单

    优酷菜单 常用控件回顾 布局文件实现 代码处理逻辑 解决bug的两种方法(ViewGroup和属性动画) 常用控件回顾 按钮控件(Button和ImageButton) ImageButton继承自I ...

  5. android实现底部弹出菜单,Android实现底部缓慢弹出菜单

    项目要求要做一个从底部缓慢弹出一个Button Menu 开始编码: MyselfFragment package io.dcloud.H5B79C397.fragment; import andro ...

  6. Android实现导航菜单随着ListView联动,当导航菜单遇到顶部菜单时停止在哪里,并且listview仍能滑动...

    需求:现要实现一个特殊UI的处理,如下图所示: 该布局的上面是一个"按钮",中间是一个"空白布局(当然也可以是ViewPager等)",下面是一个页面的导航菜单 ...

  7. Android之自定义横向滚动菜单

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/52186398 本文出自:[顾林海的博客] ##前言 已经好长时间没更新 ...

  8. Android之选项菜单和上下文菜单解析

    选项菜单 创建选项菜单 Activity类的onCreateOptionMenu事件方法用来创建选项菜单,该方法定义如下: @Overridepublic boolean onCreateOption ...

  9. Android SlidingMenu 开源项目 侧拉菜单的使用(详细配置)

    SlidingMenu作为最常用到的几个开源项目之一,最初,这个是在IOS上有的,之后被应用到了android上,在google自己原生态的侧拉菜单NavigationDrawer没出现之前,这个效果 ...

  10. android开发菜单,Android学习指南之十六:Android菜单详解

    Android用户界面的组成除了View外,还包括菜单和对话框,本节我们先来学习一下菜单的使用方法. 菜单Menu是Android用户界面中最常见的元素之一,使用非常频繁.Android菜单主要分为三 ...

最新文章

  1. 阿里达摩院已经研发出第一个可控的量子比特
  2. 使用native 查询时,对特殊字符的处理。
  3. boost::fusion::transform_view用法的测试程序
  4. java反编译工具_Java开发必会的反编译知识(附支持对Lambda进行反编译的工具)...
  5. 使用Nginx+Memcache做页面缓存
  6. mac 允许任何源 软件安装 -- 在安全模式中没有显示
  7. 芯片5nm和7nm有什么差别?CPU已经很小了,可以做大点吗?
  8. 云络科技服务器管理基础架构
  9. javaEE插件安装
  10. access h3c交换机光口_华为交换机的配置及:access、trunk、hybird端口详解
  11. linux上多个CUDA切换使用(小白教程)
  12. Java 动态代理机制讲解(Proxy.newProxyInstance)
  13. 注册坚果云无法连接服务器,坚果云无法连接服务器怎么办?
  14. R语言入门与数据分析(2)
  15. 利用Java实现将华氏温度转换为摄氏温度
  16. 电脑D盘格式化了怎么恢复
  17. Linux下服务器开发的必要准备
  18. Fabric链码常用API文档
  19. Azure学习笔记2.——六种虚拟网络连接
  20. 第十三届蓝桥杯大赛软件赛决赛C组C++

热门文章

  1. 【图像去噪】基于matlab改进非局部均值红外图像混合噪声【含Matlab源码 1640期】
  2. 【滤波器】基于matlab GUI分数延迟滤波器设计【含Matlab源码 1347期】
  3. 【优化充电】基于matlab蒙特卡洛算法求解电动汽车充电优化问题【含Matlab源码 1164期】
  4. 【答题卡识别】基于matlab Hough变换答题卡识别【含Matlab源码 250期】
  5. ai的利与弊 辩论_为什么AI辩论失败了
  6. orm php 自定义,Eloquent ORM 自定义 builder
  7. linux清除占用端口,Linux中解除端口占用的方法
  8. html4与java混编,JavaWeb04-HTML篇笔记(四)
  9. 问题1:VS2017:找不到 Windows SDK 版本10.0.17134.0
  10. if else if语句格式_Python中的if条件语句