AndroidTreeView中的列表树形展示 点击弹出树形结构中的某个列表并关闭已经打开的列表

2023-11-06

想看详情 链接如下:https://download.csdn.net/download/sinat_28238111/10545762

public class MyTestFragment extends Fragment {
    private View rootView;
    private ViewGroup containerView;
    private AndroidTreeView tView;
    private AndroidTreeView sonView1;
    private AndroidTreeView sonView2;
    private AndroidTreeView sonView3;

    TreeNode root;



    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.fragment_default, null, false);
        containerView = rootView.findViewById(R.id.container);
        addData();
        return rootView;
    }



    private void addData() {
        root = TreeNode.root();

        TreeNode myProfile = new TreeNode(new IconTreeItemHolder.IconTreeItem(R.string.ic_person, "领导班子")).setViewHolder(new ProfileHolder(getActivity()));
        TreeNode bruce = new TreeNode(new IconTreeItemHolder.IconTreeItem(R.string.ic_person, "机关科室")).setViewHolder(new ProfileHolder(getActivity()));
        TreeNode clark = new TreeNode(new IconTreeItemHolder.IconTreeItem(R.string.ic_person, "村居")).setViewHolder(new ProfileHolder(getActivity()));
        TreeNode barry = new TreeNode(new IconTreeItemHolder.IconTreeItem(R.string.ic_person, "驻街单位")).setViewHolder(new ProfileHolder(getActivity()));
        addProfileData(myProfile);
        addJiGuanData(bruce);
        addCunjuData(clark);
        addhelpData(barry);
        /**
         * 用来监听每一个TreeNode 点击一个TreeNode 其它展开的TreeNode 将关闭
         */
        myProfile.setClickListener(nodeClickListener);
        bruce.setClickListener(nodeClickListener);
        clark.setClickListener(nodeClickListener);
        barry.setClickListener(nodeClickListener);

        root.addChildren(myProfile, bruce, clark, barry);

        tView = new AndroidTreeView(getActivity(), root);
        tView.setDefaultAnimation(false);
        tView.setDefaultContainerStyle(R.style.TreeNodeStyleDivided, true);

        containerView.addView(tView.getView());





    }

    private TreeNode.TreeNodeClickListener nodeClickListener = new TreeNode.TreeNodeClickListener() {
        @Override
        public void onClick(TreeNode node, Object value) {
            IconTreeItemHolder.IconTreeItem item = (IconTreeItemHolder.IconTreeItem) value;
            for (TreeNode n : root.getChildren()) {
                if (n.equals(node)) {
                    System.out.println("" + item.text);
                } else {
                    tView.collapseNode(n);//关闭已展开的TreeNode
                }
            }
        }
    };


    /**
     * 领导
     */
    private void addProfileData(TreeNode profile) {
        Collection collection = new ArrayList();
        for (int i = 0; i < 5; i++) {

            TreeNode socialNetworks = new TreeNode(new IconTreeItemHolder.IconTreeItem(R.string.ic_people,"附件为")).setViewHolder(new HeaderHolder(getActivity()));
            collection.add(socialNetworks);
        }
        profile.addChildren(collection);

    }

    /**
     * 机关科室
     *
     * @param bruce
     */
    private void addJiGuanData(TreeNode bruce) {
        Collection collection = new ArrayList();
     final TreeNode   root = TreeNode.root();//第一步  关闭子结构
        for (int i = 0; i < 5; i++) {
            TreeNode keshiTreeNode = new TreeNode(new IconTreeItemHolder.IconTreeItem(R.string.ic_people, "文件访问")).setViewHolder(new HeaderHolder(getActivity()));

            keshiTreeNode.setClickListener(new TreeNode.TreeNodeClickListener() {
                @Override
                public void onClick(TreeNode node, Object value) {
                    IconTreeItemHolder.IconTreeItem item = (IconTreeItemHolder.IconTreeItem) value;
                    for (TreeNode n : root.getChildren()) {
                        if (n.equals(node)) {
                            System.out.println("" + item.text);
                        } else {
                            sonView1.collapseNode(n);//第三步关  闭已展开的TreeNode(子列表)
                        }
                    }
                }
            });

                for (int a = 0; a < 6; a++) {
                    final TreeNode lake = new TreeNode(new PlaceHolderHolder.PlaceItem("姐夫")).setViewHolder(new PlaceHolderHolder(getActivity()));
                    keshiTreeNode.addChildren(lake);

                }



            collection.add(keshiTreeNode);
        }
        //第二步 关闭子结构
        root.addChildren(collection);
        sonView1 = new AndroidTreeView(getActivity(), root);
        sonView1.setDefaultAnimation(false);
        sonView1.setDefaultContainerStyle(R.style.TreeNodeStyleDivided, true);


        bruce.addChildren(collection);
    }


    /**
     * 村居
     *
     * @param clark
     */
    private void addCunjuData(TreeNode clark) {
        Collection collection = new ArrayList();
     final TreeNode   root = TreeNode.root();//第一步  关闭子结构
        for (int i = 0; i < 5; i++) {
            TreeNode keshiTreeNode = new TreeNode(new IconTreeItemHolder.IconTreeItem(R.string.ic_people, "文件访问")).setViewHolder(new HeaderHolder(getActivity()));

            keshiTreeNode.setClickListener(new TreeNode.TreeNodeClickListener() {
                @Override
                public void onClick(TreeNode node, Object value) {
                    IconTreeItemHolder.IconTreeItem item = (IconTreeItemHolder.IconTreeItem) value;
                    for (TreeNode n : root.getChildren()) {
                        if (n.equals(node)) {
                            System.out.println("" + item.text);
                        } else {
                            sonView2.collapseNode(n);//第三步关  闭已展开的TreeNode(子列表)
                        }
                    }
                }
            });

            for (int a = 0; a < 6; a++) {
                final TreeNode lake = new TreeNode(new PlaceHolderHolder.PlaceItem("姐夫")).setViewHolder(new PlaceHolderHolder(getActivity()));
                keshiTreeNode.addChildren(lake);

            }



            collection.add(keshiTreeNode);
        }
        //第二步 关闭子结构
        root.addChildren(collection);
        sonView2 = new AndroidTreeView(getActivity(), root);
        sonView2.setDefaultAnimation(false);
        sonView2.setDefaultContainerStyle(R.style.TreeNodeStyleDivided, true);


        clark.addChildren(collection);
    }

    /**
     * 外协单位
     *
     * @param barry
     */
    private void addhelpData(TreeNode barry) {
        Collection collection = new ArrayList();
     final TreeNode   root = TreeNode.root();//第一步  关闭子结构
        for (int i = 0; i < 5; i++) {
            TreeNode keshiTreeNode = new TreeNode(new IconTreeItemHolder.IconTreeItem(R.string.ic_people, "文件访问")).setViewHolder(new HeaderHolder(getActivity()));

            keshiTreeNode.setClickListener(new TreeNode.TreeNodeClickListener() {
                @Override
                public void onClick(TreeNode node, Object value) {
                    IconTreeItemHolder.IconTreeItem item = (IconTreeItemHolder.IconTreeItem) value;
                    for (TreeNode n : root.getChildren()) {
                        if (n.equals(node)) {
                            System.out.println("" + item.text);
                        } else {
                            sonView3.collapseNode(n);//第三步  关闭已展开的TreeNode(子列表)
                        }
                    }
                }
            });

            for (int a = 0; a < 6; a++) {
                final TreeNode lake = new TreeNode(new PlaceHolderHolder.PlaceItem("姐夫")).setViewHolder(new PlaceHolderHolder(getActivity()));
                keshiTreeNode.addChildren(lake);

            }



            collection.add(keshiTreeNode);
        }
        //第二步 关闭子结构
        root.addChildren(collection);
        sonView3 = new AndroidTreeView(getActivity(), root);
        sonView3.setDefaultAnimation(false);
        sonView3.setDefaultContainerStyle(R.style.TreeNodeStyleDivided, true);


        barry.addChildren(collection);
    }


    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString("tState", tView.getSaveState());
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AndroidTreeView中的列表树形展示 点击弹出树形结构中的某个列表并关闭已经打开的列表 的相关文章

  • matlab 指定坐标轴,matlab设置坐标轴范围

    设置x轴和y轴为想要的显示范围 可以使用set函数 以x轴的显示范围为0到10 y轴的显示范围为90到101为例 设置x轴范围和刻度 set gca XLim 0 10 X轴的数据显示范围 set gca XTick 0 1 10 设置要显
  • Flutter键盘遮挡输入框问题

    以下代码是在网上看到的 忘记具体的出处了 请谅解 作者 Created by H on 2019 1 23 11 08 介绍 解决输入框被遮挡问题 import package flutter material dart import pa
  • C++面向对象设计原则学习笔记

    原则一 依赖倒置原则 DIP 高层模块 稳定 不应该依赖于底层模块 变化 二者都应该依赖于抽象 稳定 抽象 稳定 不应该依赖于实现细节 变化 实现细节应该依赖于抽象 稳定 原则二 开放封闭原则 OCP 对外扩展开放 对更改封闭 类模块应该是
  • 取模!了解一下!

    嘤嘤嘤 快速幂取模都不会了 自闭了 取模运算 Modulo Operation 和取余运算 Complementation 两个概念有重叠的部分但又不完全一致 主要的区别在于对负整数进行除法运算时操作不同 取模主要是用于计算机术语中 取余则
  • 面向对象-继承

    继承 概念 继承父类的属性和行为 使得子类对象可以直接具有与父类相同的属性 相同的行为 子类可以直接访问父类中的非私有的属性和行为 继承是多态的前提 如果没有继承 就没有多态 特点 java只能单继承 但可以多层继承 a继承b b继承c 那
  • kafkatemplate无法注入_Spring Boot和Kafka实战自定义复杂配置示例

    这篇博客文章展示了如何配置Spring Kafka和Spring Boot以使用JSON发送消息并以多种格式接收它们 JSON 纯字符串或字节数组 基于此配置 您还可以将Kafka生成器从发送JSON切换到其他序列化方法 此示例应用程序还演
  • RabbitMQ--基础--10.4--优先级队列

    RabbitMQ 基础 10 4 优先级队列 1 优先级队列 指的是 具有高优先级的队列 优先级高的消息具备优先被消费的特权 可以通过 设置 x max priority 来设置 优先级队列 如果在消费者的消费速度远大于生产者的速度 且 B
  • 机票预订系统uml类图_产品经理必学UML(二):用例图

    上一篇中介绍了UML中的类图 本篇笔者将与大家介绍UML中的用例图的三个方面内容 用例 Use Case 参与者 Actor 参与者 用例之间的关系 用例图 Use Case Diagrame 描述了人们希望如何使用一个系统 将相关用户 用
  • java listnode 合并链表_java实现两个有序单链表合并

    本次分享的事两个有序单链表的合并 遍历方法递归 非递归 节点类 auther lawt date 2018 11 4 08 Description 结点信息 public class Node 为了方便 这两个变量都使用public 而不用
  • ESP8266如何使用u8g2(I2C)驱动SH1106的OLED

    u8g2是一款单色图形库 非常适合12864之类的显示屏 基本上支持了市面上的主流显示控制器 可是偏偏对SH1106不是那么友好 使用起来不是很方便 打开IDE的示例程序可以看到对SH1106列出来的几乎都SPI通信方式 仅仅只有一条是使用
  • Collection集合类和Map接口各实现类详解

    Java的集合类 collection接口和Map 一 集合概述 集合 集合是java中提供的一种容器 可以用来存储多个数据 集合和数组既然都是容器 它们有啥区别呢 数组的长度是固定的 集合的长度是可变的 数组中存储的是同一类型的元素 可以
  • RHEL 6.1 KVM虚拟机桥接物理机网络

    RHEL6 1 KVM虚拟机桥接物理机网络 一 KVM默认网络配置 1 kvm上网有两种配置 a NAT 支持主机与虚拟机的互访 也支持虚拟机访问互联网 但不支持外界访问虚拟机 b bridge 桥接 可以使用虚拟机成为网络中具有独立IP的
  • python进程简单操作

    1 用进程实现类似定时器的功能 import multiprocessing import time def clock interval while True print The time is 0 format time ctime t
  • java创建线程的四种方式

    1 继承Thread类创建线程 如图所示 继承Thread类 class Aclass extends Thread 输出100以内的偶数 Override public void run for int i 1 i lt 100 i Sy
  • DINO学习笔记

    DINO学习笔记 DINO DETR with Improved DeNoising Anchor Boxes for End to End Object Detection Abstract 我们提出了DINO DETR with Imp
  • ctfshow web11详解,小白补充session和PHPSESSID相关知识

    删除cookie中存储的PHPSESSID 删除PHPSESSID的值后 空密码即可登录了 这里有个误区 刚开始的我对session的知识点了解很少 我甚至觉得直接把PHPSESSID的值当作密码的值就满足 password SESSION
  • Qt入门-QLabel类

    QLabel是QT界面中的标签类 它从QFrame下继承 class Q GUI EXPORT QLabel public QFrame Q OBJECT 定义一个QLable类 QLabel label new QLabel this 设
  • PTA 乙级——1029 旧键盘 C++实现

    旧键盘上坏了几个键 于是在敲一段文字的时候 对应的字符就不会出现 现在给出应该输入的一段文字 以及实际被输入的文字 请你列出肯定坏掉的那些键 输入格式 输入在 2 行中分别给出应该输入的文字 以及实际被输入的文字 每段文字是不超过 80 个

随机推荐

  • OpenGL学习——(1)

    基础概念 刚接触OpenGL 感觉概念比较抽象 函数库也非常强大 学习起来比较吃力 本文为自己的学习笔记 主要将厚厚的课本知识进行整理 方便今后复习 同时也可以帮助其他初学者查看知识点 减少他们在学习过程中花费的时间 1 光栅化 实际绘制或
  • Unity VR 开发教程 OpenXR+XR Interaction Toolkit (五) UI

    文章目录 教程说明 制作 World Space 模式的 UI 添加 Tracked Device Graphic Raycaster 脚本 添加 XR UI Input Module 脚本 添加 UI 射线相关脚本 负责 UI 射线的物体
  • 实现radio单选框单击取消选中状态

    需求 项目中对于有些单选内容可以设置默认选中 也可以不设置默认选中 而一般使用radio后 选中其中一个后 就无法让全部的radio恢复到一开始的未选中状态 如下图 后面的单选框只能三选一 并且也可以全部不选 同时如果选中了其中一个后 也可
  • 边缘计算:发展与挑战

    作者 高聪1 2 3 1 西安邮电大学计算机学院 2 西安邮电大学陕西省网络数据分析与智能处理重点实验室 3 西安邮电大学西安市大数据与智能计算重点实验室 本文对边缘计算进行了系统性的介绍 来源 边缘计算社区 边缘计算社区经过作者授权发布本
  • 内存的智能管理—智能指针

    前言 我们在使用C和C 进行开发的时候 申请堆区内存是必不可少的 但是很多时候 我们经常忘记释放他导致内存泄漏 从而导致程序崩溃 又或者在尚未使用完成的时候释放 从而导致出现野指针 都是非常危险的现象 所以我们在C 11的标准中提出了智能指
  • 最详细的前端二进制数据流

    一 数据类型 1 ArrayBuffer ArrayBuffer 的基本使用 ArrayBuffer 对象表示存储二进制数据的一段内存 他不能直接读写 只能通过视图 TypedArray 视图和 DataView 视图 来读写 是图的作用就
  • Yast: SSL certificate problem, verify that the CA cert is OK

    用Yast更新软件的时候发现没法更新 发现连不上SMT SERVER 总是报错说 SSL certificate problem verify that the CA cert is OK SSL routines SSL3 GET SER
  • 每天一练——C语言练习(4)

    不要懒 不要停 坚持刷题 目录 1 计算 1 2 1 4 1 n 设n是由键盘输入的正偶数 2 计算 1 1 1 3 1 n 设n是由键盘输入的正奇数 3 从终端输入3个数a b c 按从大到小的顺序输出 4 公安人员审问四名窃贼嫌疑犯 1
  • Flink任务日志写到kafka【最新1.12,1.13】

    这篇文章如果对你有帮助 记得点赞哦 有问题也可以给我评论 一 背景 公司的日志希望能够同一到一个Kibana去做一个同一的展示 那就需要将任务的日志写到kafka Flink1 12开始默认的日志框架就是log4j2 那么配置的方式跟之前l
  • StableLM(stablelm-tuned-alpha-7b)中文能力测试

    模型地址 https huggingface co stabilityai stablelm tuned alpha 7b 基模型 GPT NeoX 环境 2块3090 24G 运行代码 from transformers import A
  • Qt 2D绘图(2):绘制椭圆、弧、弦、扇形、圆角矩形

    Qt 2D绘图 2 绘制椭圆 弧 弦 扇形 圆角矩形 本文为原创文章 转载请注明出处 或注明转载自 黄邦勇帅 原名 黄勇 本文出自本人原创著作 Qt5 10 GUI完全参考手册 网盘地址 https pan baidu com s 1iqa
  • 初学SQL

    SQL是做什么的 SQL Structured Query Language 结构化查询语言 SQL 是用于访问和处理数据库的标准的计算机语言 一般的后台开发 只要是需要操作数据库 就需要用到SQL SQL与MySQL SQL Server
  • XCTF攻防世界web新手练习_ 10_simple_php

    XCTF攻防世界web新手练习 simple php 题目 题目为simple php 根据题目信息 判断是关于php代码审计的 打开题目 得到一串php代码 代码很简单 就是以GET方式获得两个参数a和b 如果a和b满足一定条件 则打印f
  • #css# 超出高度,可上下滚动

    div class test div class item p class title 这是一条数据 p div div 在最大的div里面加入以下代码 test width 200px max height 300px 设置最大的高度 o
  • 老毛桃 重装系统 Windos

    1 准备好系统启动U盘 2 电脑开机时按 F12 看电脑品牌 不同的电脑有不同的U盘启动的按钮 3 选择USB进入 4 回车进入WinPE桌面 5 打开分区工具 6 选择硬盘 使用快速分区 选择分成几个盘 确定 7 打开一键装机 选择映像文
  • 十分钟搞定 C/C++ 项目自动化构建 —— Xmake 入门指南

    上面是一个开发中的经典问题场景 发生的原因通常是 开发者工作机上的某些依赖项没有安装在测试或者客户环境中 导致程序无法运行或者报错 如何有效地避免这个尴尬的场景呢 那就需要一个持续的 可复用的自动构建流程 这样会促使团队保证他们的软件在 I
  • 缘份居在线起名,姓名打分API接口

    接口数据api 接口平台 https api yuanfenju com 开发文档 https doc yuanfenju com 支持格式 JSON 请求方式 HTTP POST 密钥 api secret wD XhOUW pvr 请求
  • 原生js层叠轮播

    轮播图 基本上是每个网页必备的一个模块 那么下面就给大家分享一个层叠样式轮播图 先给大家看一下样式图 首先满足自动轮播 鼠标放上就会停止轮播 移除就会继续 要想写好一个轮播图 首先肯定是要把样式 布局写出来 废话不多说 直接放样式布局 cs
  • ST-Llink与STM32最小系统开发板的线路连接

    ST Llink与STM32最小系统开发板的线路连接 1 ST Llink与STM32最小系统开发板的线路连接 ST Llink SWO STM32 SWDIO ST Llink SWCLK STM32 SWCLK ST Llink GND
  • AndroidTreeView中的列表树形展示 点击弹出树形结构中的某个列表并关闭已经打开的列表

    想看详情 链接如下 https download csdn net download sinat 28238111 10545762 public class MyTestFragment extends Fragment private