android實(shí)現(xiàn)菜單三級(jí)樹效果
本文實(shí)例為大家分享了android實(shí)現(xiàn)菜單三級(jí)樹展示的具體代碼,供大家參考,具體內(nèi)容如下
以下是部分代碼,完整代碼請?jiān)谧钕旅纥c(diǎn)擊下載:
【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"); // 一級(jí)菜單名數(shù)組 parent = MenuCatName.split("/"); // 二級(jí)菜單名數(shù)組 child = MenuGroupName.split("/"); // 三級(jí)菜單名數(shù)組 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; } /** * 三層樹結(jié)構(gòu)中的第二層是一個(gè)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); // 臨時(shí)變量取得TreeViewAdapter的TreeNode集合,可為空 List<TreeNode> tmp = treeViewAdapter.getTreeNode(); final TreeNode treeNode = (TreeNode) getChild(groupPosition, childPosition); tmp.add(treeNode); treeViewAdapter.updateTreeNode(tmp); treeView.setAdapter(treeViewAdapter); // 取得選中的二級(jí)樹形菜單的父子節(jié)點(diǎn),結(jié)果返回給外部回調(diào)函數(shù) treeView.setOnChildClickListener(this.stvClickEvent); /** * 第二級(jí)菜單展開時(shí)通過取得節(jié)點(diǎn)數(shù)來設(shè)置第三級(jí)菜單的大小 */ 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); } }); /** * 第二級(jí)菜單回收時(shí)設(shè)置為標(biāo)準(zhǔn)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; } /** * 三級(jí)樹結(jié)構(gòu)中的首層是TextView,用于作為title */ public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { TextView textView = TreeViewAdapter.getTextView(this.parentContext); textView.setText(getGroup(groupPosition).toString()); // 設(shè)置首層menu標(biāo)題背景 textView.setBackgroundResource(R.drawable.menu_category); textView.setPadding(TreeViewAdapter.PaddingLeft * 2, 0, 0, 0); return textView; }
效果圖:
完整代碼下載地址
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
android工程下不能運(yùn)行java main程序的解決方法
這篇文章主要介紹了android工程下不能運(yùn)行java main程序的解決方法,需要的朋友可以參考下2014-05-05Android仿微信圖片選擇器ImageSelector使用詳解
這篇文章主要為大家詳細(xì)介紹了Android仿微信圖片選擇器ImageSelector的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12ToolBar中menu無法同時(shí)顯示圖標(biāo)和文字問題的解決方法
這篇文章主要為大家詳細(xì)介紹了ToolBar中menu無法同時(shí)顯示圖標(biāo)和文字問題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09Android數(shù)據(jù)持久化之File機(jī)制分析
這篇文章主要介紹了Android數(shù)據(jù)持久化之File機(jī)制,較為詳細(xì)的分析了File機(jī)制的原理及Android使用File實(shí)現(xiàn)數(shù)據(jù)持久化的相關(guān)操作技巧,需要的朋友可以參考下2017-05-05Android RefreshLayout實(shí)現(xiàn)下拉刷新布局
這篇文章主要為大家詳細(xì)介紹了Android RefreshLayout實(shí)現(xiàn)下拉刷新布局,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10Android 給RecyclerView添加分割線的具體步驟(分享)
下面小編就為大家?guī)硪黄狝ndroid 給RecyclerView添加分割線的具體步驟(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04