当前位置: 移动技术网 > IT编程>移动开发>Android > android实现菜单三级树效果

android实现菜单三级树效果

2019年08月01日  | 移动技术网IT编程  | 我要评论

网站发布,超级机械帝国下载,再见小伙伴

本文实例为大家分享了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<supertreeviewadapter.supertreenode> 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<treenode> 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;
 }

效果图:

完整代码

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网