Android 打造任意层级树形控件 考验你的数据结构和设计

本文详细介绍了如何在Android中构建任意层级的树形控件,包括Node类的设计,如级别、展开状态、图标、子节点等属性,以及相关的操作方法。此外,还展示了TreeListViewAdapter的实现,该适配器用于显示树形结构,并处理节点的展开和关闭。TreeHelper类用于对数据进行排序和过滤,确保正确显示树结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. * 当前的级别

  2. */

  3. private int level;

  4. /**

  5. * 是否展开

  6. */

  7. private boolean isExpand = false;

  8. private int icon;

  9. /**

  10. * 下一级的子Node

  11. */

  12. private List children = new ArrayList();

  13. /**

  14. * 父Node

  15. */

  16. private Node parent;

  17. public Node()

  18. {

  19. }

  20. public Node(int id, int pId, String name)

  21. {

  22. super();

  23. this.id = id;

  24. this.pId = pId;

  25. this.name = name;

  26. }

  27. public int getIcon()

  28. {

  29. return icon;

  30. }

  31. public void setIcon(int icon)

  32. {

  33. this.icon = icon;

  34. }

  35. public int getId()

  36. {

  37. return id;

  38. }

  39. public void setId(int id)

  40. {

  41. this.id = id;

  42. }

  43. public int getpId()

  44. {

  45. return pId;

  46. }

  47. public void setpId(int pId)

  48. {

  49. this.pId = pId;

  50. }

  51. public String getName()

  52. {

  53. return name;

  54. }

  55. public void setName(String name)

  56. {

  57. this.name = name;

  58. }

  59. public void setLevel(int level)

  60. {

  61. this.level = level;

  62. }

  63. public boolean isExpand()

  64. {

  65. return isExpand;

  66. }

  67. public List getChildren()

  68. {

  69. return children;

  70. }

  71. public void setChildren(List children)

  72. {

  73. this.children = children;

  74. }

  75. public Node getParent()

  76. {

  77. return parent;

  78. }

  79. public void setParent(Node parent)

  80. {

  81. this.parent = parent;

  82. }

  83. /**

  84. * 是否为跟节点

  85. *

  86. * @return

  87. */

  88. public boolean isRoot()

  89. {

  90. return parent == null;

  91. }

  92. /**

  93. * 判断父节点是否展开

  94. *

  95. * @return

  96. */

  97. public boolean isParentExpand()

  98. {

  99. if (parent == null)

  100. return false;

  101. return parent.isExpand();

  102. }

  103. /**

  104. * 是否是叶子界点

  105. *

  106. * @return

  107. */

  108. public boolean isLeaf()

  109. {

  110. return children.size() == 0;

  111. }

  112. /**

  113. * 获取level

  114. */

  115. public int getLevel()

  116. {

  117. return parent == null ? 0 : parent.getLevel() + 1;

  118. }

  119. /**

  120. * 设置展开

  121. *

  122. * @param isExpand

  123. */

  124. public void setExpand(boolean isExpand)

  125. {

  126. this.isExpand = isExpand;

  127. if (!isExpand)

  128. {

  129. for (Node node : children)

  130. {

  131. node.setExpand(isExpand);

  132. }

  133. }

  134. }

  135. }

包含了树节点一些常见的属性,一些常见的方法;对于getLeve

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值