# OhosTreeView **Repository Path**: chinasoft2_ohos/ohos-tree-view ## Basic Information - **Project Name**: OhosTreeView - **Description**: 实现可以展开/折叠的树型菜单 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2021-05-11 - **Last Updated**: 2024-11-08 ## Categories & Tags **Categories**: harmonyos-listview **Tags**: None ## README OhosTreeView ==================== ### 项目介绍 + 项目名称:OhosTreeView + 所属系列:openharmony的第三方组件适配移植 + 功能:实现可以展开/折叠的树型菜单 + 项目移植状态:主功能完成 + 调用差异:无 + 开发版本:sdk6,DevEco Studio2.2 beta1 + 基线版本:release 1.2.+ ### 效果演示 ![](https://images.gitee.com/uploads/images/2021/0623/101454_390ff63e_8941935.gif) ### 安装教程 **1)** 在项目根目录下的build.gradle文件中, ``` allprojects {   repositories {       maven {           url 'https://s01.oss.sonatype.org/content/repositories/releases/'       }   } } ``` **2)** 在entry模块的build.gradle文件中, ``` dependencies { implementation('com.gitee.chinasoft_ohos:treeView:1.0.0') ...... } ``` 在sdk6,DevEco Studio2.2 Beta1下项目可直接运行 如无法运行,删除项目.gradle,.idea,build,gradle,build.gradle文件, 并依据自己的版本创建新项目,将新项目的对应文件复制到根目录下 ### 使用说明 **1)** 创建一个树状菜单根目录 ```TreeNode.root()``` ```java TreeNode root = TreeNode.root(); ``` **2)** 创建一个树状菜单节点目录 ```java TreeNode parent = new TreeNode("MyParentNode"); TreeNode child0 = new TreeNode("ChildNode0"); TreeNode child1 = new TreeNode("ChildNode1"); parent.addChildren(child0, child1); root.addChild(parent); ``` **3)** 添加树状菜单图形的layout ```java OhosTreeView tView = new OhosTreeView(getActivity(), root); containerView.addView(tView.getView()); ``` **4)** 自定义节点视图 Extend ```TreeNode.BaseNodeViewHolder``` and overwrite ```createNodeView``` method to prepare custom view for node: ```java public class MyHolder extends TreeNode.BaseNodeViewHolder { ... @Override public View createNodeView(TreeNode node, IconTreeItem value) { final LayoutInflater inflater = LayoutInflater.from(context); final View view = inflater.inflate(R.layout.layout_profile_node, null, false); TextView tvValue = (TextView) view.findViewById(R.id.node_value); tvValue.setText(value.text); return view; } ... public static class IconTreeItem { public int icon; public String text; } } ``` **5)** 建立视图holder跟节点的关系 ```java IconTreeItem nodeItem = new IconTreeItem(); TreeNode child1 = new TreeNode(nodeItem).setViewHolder(new MyHolder(mContext)); ``` **6)** 其他接口 ```java TreeNode.setClickListener(TreeNodeClickListener listener); OhosTreeView.setDefaultViewHolder OhosTreeView.setDefaultNodeClickListener ... ``` ### 测试信息 CodeCheck代码测试无异常 CloudTest代码测试无异常 病毒安全检测通过 当前版本demo功能与原组件基本无差异 ### 版本迭代 + 1.0.0 + 0.0.2-SNAPSHOT