我正在开发一个显示元素列表的GUI。
所有元素都在一维可迭代数组中,因此显示它们通常看起来像这样:
foreach (Element e: elements) {
display.Display(e);
}
我现在需要一种方法来组织树结构中的元素,如下例所示:
在我的系统中,“folder”元素和“file”元素之间没有区别,但我可以访问元素的'depth'和'isExpanded'值。
如何根据迭代前一个元素的数据确定是否应显示元素?
答案 0 :(得分:0)
我想我已经弄清楚了,但可能有些情况搞得一团糟:
bool prevIsCollapsed = false;
int collapsedPropertyDepth = 0;
// iterate through each property of this component
for (Property p : properties)
{
int depth = property.depth;
if (prevIsCollapsed && depth > collapsedPropertyDepth)
{
// dont display this property
continue;
}
if (!property.isExpanded)
{
prevIsCollapsed = true;
collapsedPropertyDepth = depth;
}
else
{
prevIsCollapsed = false;
}
}