动态TreeLayout

时间:2018-01-17 11:33:46

标签: android android-layout

我一直试图创建这个逻辑2天,尽管在纸面上看起来像一个相对简单的问题,但是有很多情况会在有效编写代码的同时弄乱这个。

在查询Web服务后,我收到了这种类型的响应:

enter image description here

我需要动态创建一个布局,具体取决于模拟此行为的答案:

enter image description here

spinner包含所有根项。如果我选择一个项目,则有2个选项。如果它没有任何孩子,我只添加一个textview。否则,我添加一个将子项作为选项的新微调器,如果选择了子项,则会在下面创建一个新的文本视图。这是递归的。

我成功实现了这个功能,它只有 2个级别(json没有id'5'元素)。我希望这可以无限多个级别工作。当我有一个3级树并且我在中间节点上选择时,会出现问题。我想隐藏他的编辑文本,还有他孩子的微调器和编辑文本,我没有直接访问新编程创建的视图。

2 个答案:

答案 0 :(得分:1)

使用递归函数。如果子节点为空,则停止递归。所以你先对第一个项目进行调用,如果没有孩子则进入下一个项目,如果有孩子则再次调用此函数。

删除视图取决于您选择的根元素。如果是RecyclerView,那么只需更新集合并通知适配器/使用DiffUtil回调。 如果您动态添加视图,则只需在创建时设置View id,并在更新时按ID删除视图。

答案 1 :(得分:1)

使用View.generateViewId() urview.setId(View.generateViewId())将{id设置为动态创建的视图,并根据您的需要,使用ID删除它们。